2017-03-24 72 views
1

Python中是否有一种简单的方法可以生成一个范围内的随机数,但不包括该范围内的某些数字子集?在范围内生成随机数,但不包括某些数字

例如,我知道,你可以生成0和9之间的随机数:

from random import randint 
randint(0,9) 

如果我有一个列表,例如exclude=[2,5,7],我不想被退回?

+1

这感觉就像一个[XY问题(https://meta.stackexchange.com/questions/66377/what -is-the-xy-problem)给我。你想通过这样做完成什么? – Chris

+1

我想你可以做相反的事情,并生成一个你希望被允许返回的数字列表,然后使用['random.choice()'](https://docs.python.org/2/library/random .html#random.choice) – UnholySheep

回答

8

试试这个:

from random import choice 

print choice([i for i in range(0,9) if i not in [2,5,7]]) 
2

尝试用这样的事情:

from random import randint 

def my_custom_random(): 
    exclude=[2,5,7] 
    randInt = randint(0,9) 
    return my_custom_random() if randInt in exclude else randInt 

print(my_custom_random()) 
相关问题