2016-09-16 123 views
0

我想从字符C列表(例如C = ['A','B','C','D'])生成随机字符串。该随机串应具有长度N(例如,N = 32)。每个角色都应该经常出现 - 在这个例子中是8次。从给定字符生成等长的固定长度的随机字符串

我怎样才能实现每个字符同样经常出现在这里:

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

还是有更好的办法?

+1

我什么也看不到你做这件事的方式不对。 – zvone

+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) 
相关问题