![](/img/trans.png)
[英]Most Pythonic Way to Generate Random Strings of Fixed Length From Given Characters
[英]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.