0
我想從字符C列表(例如C = ['A','B','C','D'])生成隨機字符串。該隨機串應具有長度N(例如,N = 32)。每個角色都應該經常出現 - 在這個例子中是8次。從給定字符生成等長的固定長度的隨機字符串
我怎樣才能實現每個字符同樣經常出現在這裏:
''.join(random.choice(C) for i in range(N))
還是有更好的辦法?
我想從字符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
是的,它看起來不錯 –