我需要创建一个随机排列的数字列表,范围从0到9999 所以这是我的方法:
order = list(range(10000));
rorder = [];
while (len(order) > 0):
index_to_pop = random.randint(0,len(order));
print(str(index_to_pop) + " from list of size " + str(len(order)));
rorder.append(order.pop(index_to_pop));
但是这失败并显示错误
流行指数超出范围
这是因为在迭代中给定点的print语句给出了:
从大小7288的列表中选择7288
那么...怎么可能呢?根据文档,randint应该给我一个0到len(order)-1之间的数字。
我在做什么错了?
答案 0 :(得分:0)
您在这里是错误的:“根据文档randint,我应该给我一个介于0和len(order)-1之间的数字。”
医生说:“ random.randint(a,b)。返回一个随机整数N,使得a <= N <= b。randrange(a,b + 1)的别名。”
在此处查看:here
答案 1 :(得分:0)
我建议使用模块 random 中的 shuffle 。我认为这就是您所需要的:
import random
ordered = list(range(10000))
random.shuffle(ordered)
print(ordered)
请记住,随机播放不会返回随机播放的列表。它正在拖延您提供给它的清单。