Python:randint生成所需范围的上限

时间:2019-03-01 10:43:02

标签: python

我需要创建一个随机排列的数字列表,范围从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之间的数字。

我在做什么错了?

2 个答案:

答案 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)

请记住,随机播放不会返回随机播放的列表。它正在拖延您提供给它的清单。