繁体   English   中英

从出现的给定字符中生成固定长度的随机字符串,发生次数相等

[英]Generate random strings of fixed length from given characters with equal occurance

我想从字符C的列表中生成随机字符串(例如C = ['A','B','C','D'])。 该随机串的长度应为N(例如N = 32)。 每个角色应同样频繁地出现-在该示例中为8次。

如何实现每个字符在此处均等出现:

''.join(random.choice(C) for i in range(N))

或者,还有更好的方法?

我认为,如果您使用random.choice则不能保证以相同的频率选择每个项目。 每个选择都有同等的可能性,并非一回事。

最好的方法是维护一个字符列表并对其进行随机排序...

characters = C * 8
random.shuffle(characters)
print(''.join(characters))

或者,如果您想要一堆它们:

def get_random_strings(characters, count, N):
    """Yield `N` strings that contain each character in `characters` `count` times."""
    characters = list(characters) * count
    for _ in xrange(N):
        random.shuffle(characters)
        yield ''.join(characters)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM