2017-08-28 45 views
1

我希望能夠得到隨機整數,除了我的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 
... 

這似乎很基本的,但我不明白我怎麼能重複一遍又一遍,直到有一個很好的號碼,什麼是實現這一目標的最快的,更有效的方式,任何建議?

+1

你可以使用遞歸 – Verv

+0

[這個答案](https://stackoverflow.com/a/44349083/2759780)可能的幫助。 – atwalsh

回答

4

而不是重新取樣,只是樣品與黑名單項目預先準備好的數據已被刪除:

import random 

choices = list(set(range(12)).difference(blacklist)) 
n = random.choice(choices) 
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) 
相關問題