在python中,如何生成一个范围内的随机整数,排除列表中的一些数字?

Din*_*ing 3 python random

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

第一次,程序生成2,然后我把2放在'排除'列表中,

下次,我需要生成一个介于0到9之间的数字,并排除2.让我们说它是第二个转弯,程序生成5.

第三回合,我需要生成一个从0到9的数字,不包括2和5.

由于范围非常大(百万级),有什么方法是有效的吗?

Mar*_*ers 6

生成一次可能的值,每次刷新该值并从该列表中弹出值:

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

def get_value():
    return values.pop()
Run Code Online (Sandbox Code Playgroud)

这将最终以随机顺序产生该范围内的所有值,而不重复.