2017-09-22 7 views
0

Ich habe einige Zeilen Code, die Zufallszahlen generieren, Wie kann ich aufhören, doppelte Zahlen zu generieren?In Python - So generieren Sie Zufallszahlen ohne Wiederholung

import random 
num = random.randrange(0,1000) 
x = 13 


while num != x : 
    num = random.randrange(0 , 14) 

    print(num) 
+0

einen Satz verwenden Kommissionierung die Zahlen zu speichern. – Cicero

+0

Wenn Sie 'numpy' verwenden können:' numbers = numpy.random.choice (Bereich (1000), jedoch_many_numbers_you_want, ersetzen = False) ' – roganjosh

Antwort

1

Speichern Sie die Nummern, wie sie generiert werden, und überprüfen Sie diese Liste für jede neue Nummer.

Die Leistung wird nicht gut sein, da die zu überprüfende Liste länger wird, aber zumindest werden Sie keine Duplikate haben.

Eine andere Möglichkeit wäre, eine Liste von Zahlen aus 1..n zu generieren, die Zahlen zu mischen und dann die Liste zu durchlaufen, um Ihre nächste eindeutige Zufallszahl zu erhalten.

>>> import random 
>>> l = list(range(4)) 
>>> random.shuffle(l) 
>>> l 
[3, 2, 4, 1] 
+2

Oder als ein Wörterbuch mit der Nummer als Schlüssel und keiner als Wert. Wenn Sie dann eine neu generierte Nummer suchen wollen, müssen Sie nur nachsehen: new_number in dict – Ben

+1

@Ben: Das ist ein Satz. – quamrana

+0

@quamrana Großartiger Punkt! Ich bin so daran gewöhnt, mit Diktaten zu arbeiten, dass ich Sets komplett vergessen habe. Sets sind hier der bessere Weg. – Ben

2

Wenn Sie nur einmal jede Nummer wählen kann, wird dies das gleiche wie zufällig eine Liste Sortierung und eine Nummer zu einem Zeitpunkt

import random 

desired_number = 13 
guesses = range(0,14) 
random.shuffle(guesses) 

current_guess = None 

while current_guess != desired_number: 
    current_guess = guesses.pop() 
    print(current_guess) 
Verwandte Themen