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

Python:randint生成所需范围的上限,python,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(ord

我需要创建一个随机排列的数字列表,从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));
但是,这会失败,并出现错误

pop索引超出范围

这是因为迭代中给定点的print语句给出:

7288从尺寸7288的列表中选择

所以。。。这怎么可能呢?根据文件,randint应该给我一个介于0和lenorder-1之间的数字


我做错了什么?

你错了:根据文档,randint应该给我一个介于0和lenorder-1之间的数字

医生说:random.randinta,b。返回一个随机整数N,这样a我建议使用随机模块中的随机数。我想这就是你需要的:

import random

ordered = list(range(10000))
random.shuffle(ordered)
print(ordered)

请记住,洗牌不会返回洗牌列表。它正在把你给它的清单撕下来

什么?如果你想让范围是独占的,你需要自己减去1。你看错了文档。包括端点。与之相反。你为什么要重新发明轮子?使用random.samplerange1,10000,10000。为什么不使用numpy呢?order=np.Arange1000,rorder=np.random.ShuffleOrderTanks!!我会用这个来代替!尽管如此,我还是不能将这个答案标记为正确的,因为它没有解决我原来的问题。但无论如何谢谢你欢迎你:你的权利!但我想为什么不解决主要问题;从scypy那里拿到了我的文件。没有看到这是一个不同的randint函数。所以它的行为不同。谢谢