python - 在python中,如何生成一个范围内的随机整数,不包括列表中的某些数字?

标签 python random

例如,一开始我想从 (0,9) 生成一个随机整数,

一开始,程序生成2,然后我把2放在'excluding'列表中,

下次,我需要生成一个介于 0 到 9 之间的数字,不包括 2。假设在第二轮,程序生成 5。

第三轮,我需要生成一个0到9的数字,不包括2和5。

由于范围很大(百万级),请问有什么方法比较高效?

最佳答案

生成可能的值一次,将其打乱并每次从该列表中弹出值:

values = range(10)
random.shuffle(values)

def get_value():
    return values.pop()

这最终会以随机顺序生成范围内的所有值,不会重复。

关于python - 在python中,如何生成一个范围内的随机整数,不包括列表中的某些数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23138404/

相关文章:

python - 如何使用PyMongo批量删除记录

Python .xlsx (Office OpenXML) 阅读器像 csv 模块一样简单?

c - Linux下socket如何生成随机文件名?

java - 如何忽略随机数生成器中的负值

c++ - std::normal_distribution<double> 导致 Windows 与 Linux 的顺序错误?

Python - 如何将可迭代对象传递给 product()?

python - 检查 Pandas Series 是否为字符串类型

python - 沿着 Pandas Dataframe 中的列进行计数?

ruby - 从 ruby 数组中获取随机元素(您的解决方案)?

python - 如何在 python 中制作自定义 rand 函数