2017-08-28 1 views
1

Ich möchte in der Lage sein, zufällige Ganzzahlen mit Ausnahme von Zahlen in meinem Array blacklist zu bekommen, habe ich einige Schwierigkeiten zu verstehen, wie ich den Code erneut durchlaufen kann, bis es die gute Nummer findet.Wie bekomme ich eine Zufallszahl, die nicht in einer schwarzen Liste von ganzen Zahlen steht?

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 
... 

Dies scheint ziemlich einfach, aber ich verstehe nicht, wie ich immer und immer wieder durchlaufen kann, bis es eine gute Anzahl ist, was ist der schnellste und effizienteste Weg, dies zu erreichen, jeder Vorschlag?

+1

Sie Rekursion – Verv

+0

[Diese Antwort] verwenden (https://stackoverflow.com/a/44349083/2759780) helfen könnte. – atwalsh

Antwort

4

Anstatt Resampling, nur Probe aus vorgefertigten Daten mit den schwarzen Liste Elemente bereits entfernt:

import random 

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

In Python gibt es keine do ... while. Ich würde folgendes tun:

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