2017-09-22 782 views
0

我有幾行代碼生成隨機數字,我怎樣才能停止生成重複的數字?在Python中 - 如何生成不重複的隨機數字

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


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

    print(num) 
+0

挑選一個號碼使用一組存儲的數字。 – Cicero

+0

如果您可以使用'numpy':'numbers = numpy.random.choice(range(1000),otherwise_many_numbers_you_want,replace = False)' – roganjosh

回答

1

存儲生成的數字並檢查每個新號碼的列表。

性能不會太好,因爲要檢查的列表會變長,但至少不會有重複。

另一種方法是從1..n生成一個數字列表,隨機數字,然後迭代列表以獲得您的下一個唯一的隨機數。

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

或作爲一個字典,其中數字作爲鍵和None作爲值。然後,如果你想查找一個新生成的號碼,你所要做的就是看看是否:在字典中的new_number – Ben

+1

@Ben:這是一個集合。 – quamrana

+0

@quamrana偉大的一點!我習慣於使用字典,完全忘記了集合。集合在這裏是更好的方法。 – Ben

2

如果只能挑選每個數字一次,這將成爲一樣的隨機排序列表,並在同一時間

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) 
相關問題