我想从字符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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句