新功能....不能随意工作

时间:2016-11-24 02:21:15

标签: python list function random

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

感谢任何看过这个的人。我想要做的是创建一个随机混乱的列表。然而,当我运行它时,它似乎根本不是随机的。我可能会忽视某些东西,或者它是随意的。如果有机会,请回复我。

1 个答案:

答案 0 :(得分:4)

你的洗牌不公平。它将列表中的随机项移动到列表末尾的次数与列表中的项目一样多次,但这意味着第一项仅略小于1 - ((n - 1)/ n) n 被移动的机会,在公平的洗牌中,它将有(n-1)/ n的机会被移动。对于7个元素的列表,第一个元素保持在同一个位置的概率大约为34%,相比之下,公平洗牌的几率为14%。

使用简单的标准随机播放,例如Fisher–Yates

>

或内置random.shuffle