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

时间:2014-03-30 16:42:29

标签: python random

我一直在谷歌上搜索一段时间,但还没有找到解决方案。

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

我想要的是生成一个介于4000和5000之间但没有某些数字的数字列表:在我的情况下为7,8和9。 random内是否有任何模块或功能可以执行此操作?

1 个答案:

答案 0 :(得分:2)

这样的事情会发生。

>>> 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'])