从给定字符生成等长的固定长度的随机字符串
问题描述:
我想从字符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)
我什么也看不到你做这件事的方式不对。 – zvone
是的,它看起来不错 –