我想从字符C列表中生成随机字符串(例如C = ['A','B','C','D'])。该随机串应具有长度N(例如N = 32)。每个角色应该经常发生 - 在那个例子中8次。
如何实现每个角色在此处经常出现:
''.join(random.choice(C) for i in range(N))
或者有更好的方法吗?
答案 0 :(得分:1)
如果您使用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)