2016-11-24 6 views
0
import random 

#################### 
def ListRearrange(listx): 
    listz = listx[:] 
    x = len(listx) 
    for y in range(x): 
       a = random.choice(range(x)) 
       b = listx.pop(a) 
       listx.append(b) 

    return listx 
#################### 
list1 = ["Hello", 5000, "60", "Timmothy", 400, "2", "Okay"] 
print list1 
for g in (1,2,3,4,5,6,7,8,9):   
    p = ListRearrange(list1) 
    print p 

これを見ていただいて感謝します。私がしようとしているのは、ランダムに混乱したリストを作成することです。しかし、私はそれを実行すると、全くランダムに見えません。私は何かを見落としている可能性があります、またはそれはそれが得るのと同じくらいランダムです。チャンスがあるときに私に戻ってください。新しい機能....ランダムに十分に機能しない

答えて

4

あなたのシャッフルは公平なものではありません。リストの中のランダムな項目をリストの最後まで移動しますが、最初の項目は1よりわずかに1だけ小さいことを意味します。−((n − 1)/ n)nチャンスが移動する可能性があります。フェアシャッフルでは、(n − 1)/ n移動するチャンスがあります。 7つの要素のリストについては、最初の要素が同じ場所にとどまる可能性は約34%、公正シャッフルでは約14%の可能性があります。

または内蔵random.shuffle

Fisher–Yatesのように、簡単な、標準シャッフルを使用してください。

+0

私の主よ、私はばかです。 random.shuffle うわー。ありがとうございました。 –

関連する問題