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

问题描述 投票:-3回答:2

我需要创建一个从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之间的数字。

我究竟做错了什么?

python
2个回答
0
投票

你错了:“根据文件,randint应该给我一个介于0和len之间的数字(顺序)-1。”

文档说:“random.randint(a,b)。返回一个随机整数N,使得<= N <= b。为randrange(a,b + 1)的别名。”

在这里看到:https://docs.python.org/3/library/random.html#random.randint


0
投票

我建议使用模块随机的shuffle。我想这就是你需要的:

import random

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

请记住,shuffle不会返回洗牌列表。它正在改变你给它的清单。

© www.soinside.com 2019 - 2024. All rights reserved.