2016-09-16 174 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) 
相關問題