如何在不使用“shuffle”功能的情况下创建一个混洗列表的程序?

时间:2014-12-12 05:24:53

标签: python list for-loop random shuffle

我正在创建一个程序,该程序将随机播放100个随机数的列表,然后交换/混洗1000次,而不使用" shuffle"功能。问题是,我的程序无法正常工作。这些数字根本没有彻底改变,我无法找到一种方法来使用for循环来将数字洗牌超过1000次。帮助将不胜感激。

import random
originalnum_list=[]
num_list=[]
num_list1 = []
num_list2 = []
for num in range(100):
    num_list1.append(random.randrange(0,51))

for num in range(100):
    num_list2.append(random.randrange(0,51))
originalnum_list.append(num_list1)
originalnum_list.append(num_list2)
print "The computer entered: " + str(originalnum_list)

for shuffle in range(0,1001):
    shuffle=num_list1
    num_list1=num_list2
    num_list2=shuffle
num_list.append(num_list1)
num_list.append(num_list2) 
print "The shuffeled result is: " + str(num_list)

2 个答案:

答案 0 :(得分:1)

所以我的理解是你想要一个程序拿一个列表然后随机化该列表内容的位置,对吗?

import random
def list_randomizer(lst):
    result = []
    while len(lst) > 0:
        index = random.randrange(0,len(lst))
        result.append(lst.pop(index))
    return result

此功能将随机播放您放入的任何列表。您可以通过for循环轻松地将其随机播放多次。

for i in range(1000):
    list = list_randomizer(list)

这将继续将更新的列表传递给函数,使其重新洗牌1000次。

答案 1 :(得分:0)

这只是交换num_list1和num_list2

for shuffle in range(0,1001):
    shuffle=num_list1
    num_list1=num_list2
    num_list2=shuffle

如果你偶数次这样做,你最终会得到一个相同的列表。

shuffle 应该如何工作?它需要公平吗?