如何获得一个不在整数黑名单中的随机数?

时间:2017-08-28 15:43:40

标签: python

我希望能够获得随机整数,除了我的blacklist数组中的数字,我在理解如何再次迭代代码直到找到好的数字时遇到了一些麻烦。

的Python

def viewName(...):
    random_int = random.randint(0, 11)
    blacklist = [1, 2, 3, 5, 6, 10]

    for bl in blacklist:
        if random_int == bl:
            #try again till there's a number that isn't in the blacklist
        else:
            correctNumber = random_int
...

这看起来很基本,但我不明白我怎么能一遍又一遍地迭代,直到有一个好数字,什么是最快,更有效的方法来实现这个,任何建议?

2 个答案:

答案 0 :(得分:4)

不是重新抽样,而是从预先准备好的数据中抽取已列入黑名单的项目:

import random

choices = list(set(range(12)).difference(blacklist))
n = random.choice(choices)

答案 1 :(得分:1)

在python中没有做...而。我会做以下事情:

def viewName(...):
    blacklist = [1, 2, 3, 5, 6, 10]
    random_int = 1
    while random_int in blacklist:
        random_int = random.randint(0, 11)