2016-11-24 50 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的項目((n − 1)/ n)n被移動的可能性,在一個公平的洗牌中,它將有一個被移動的機會(n − 1)/ n。對於7個元素的列表,第一個元素留在同一個地方的概率約爲34%,相比之下,公平洗牌的機會約爲14%。

使用簡單,標準的洗牌,像Fisher–Yates

或者內置random.shuffle

+0

我的主我是個白癡。 random.shuffle 哇。謝謝。 –