python - 在没有特定数字的范围内生成随机数

标签 python random

我已经用谷歌搜索了一段时间,但没有找到解决方案。

我想我可以用几行代码来做到这一点,但我正在寻找的是一个简单的(可能是一行)答案。

我想要的是生成 4000 到 5000 之间但没有某些数字的数字列表:在我的例子中是 7,8 和 9。 random 中是否有任何模块或函数执行此操作?

最佳答案

像这样就可以了。

>>> num = [elem for elem in xrange(4000, 5001) if not {'7', '8', '9'}.intersection(str(elem))]
>>> choice(num)
4210
>>> choice(num)
4640
>>> choice(num)
4102

理解通过创建一个由字符串 {'7', '8', '9'} 组成的集合来工作,并找到这个集合与我们数字中的数字集合的交集(从 4000 到 5000 生成,包括两者)。如果交集为空,则该数字没有上面指定的任何数字,在这种情况下,我们应该包括它并使用该列表生成随机数。

例如,

>>> {'7', '8', '9'}.intersection(str(4555))
set([])
>>> {'7', '8', '9'}.intersection(str(4765))
set(['7'])

关于python - 在没有特定数字的范围内生成随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22746688/

相关文章:

python - "Unsparsing"具有给定掩码的 numpy 数组

Python:将打印函数作为参数发送

arrays - 从数组中选择一个项目并将项目名称与另一个项目名称进行比较

c - 带有种子的随机数生成器

java - 从参数生成一定数量的随机数,然后存储它们以便稍后在方法中调用

python - Healpy 可以计算双谱来研究 CMB 图的非高斯性吗?

python - Pandas 卡住列名

Python如何创建一个文档矩阵,其中(i,j)条目作为术语索引

PHP快速随机字符串函数

javascript - 上传时获取唯一编号