2014-09-25 27 views
0

Python中是否有方法可以生成除特定數字之外的範圍內的隨機非重複數字。例如,我想生成1到10之間的數字,但「 1「不應該生成。任何幫助將不勝感激。謝謝。生成除Python中的特定數字以外的任意非重複數字

+0

「非重複」 和 「隨機」 是互斥的。隨機序列重複數字。 – 2014-09-25 02:25:22

+0

@ IgnacioVazquez-Abrams:不一定,您可以例如生成一個序列的隨機排列。因此,該列表是隨機的,但不重複... – 2014-09-25 02:40:55

+0

@CommuSoft:這是一個隨機的「輸出」。可以生成另一個與第一個序列完全相同的隨機置換。 – 2014-09-25 02:50:55

回答

0

假設你想在a範圍中排除nb

import random 
random.choice([random.randint(a,n-1),random.randint(n+1,b)]) 
+0

當我嘗試在random.choice中使用random.sample而不是random.randint時,它會拋出一個錯誤,指出樣本大於人口 – user3330378 2014-09-25 04:01:44

+0

不需要在random.choice中同時使用random.sample。如果您需要使用樣本進行一次隨機選擇,您可以執行'print random.sample(population,1)[0]' – g4ur4v 2014-09-25 05:26:00

1

使用random.sample()有人口不包括你不喜歡的值(一個或多個)。

>>> import random 

>>> population = range(2,11) # 2,3,4,5,6,7,8,9,10 
>>> print random.sample(range(2,11), 5) 
[6, 2, 4, 8, 9] 

或者另一個例子,如果你不想 「42」:

>>> population = range(1, 101) # 1,2,...,100 
>>> population.remove(42) 
>>> print random.sample(population, 20) 
[45, 10, 86, 7, 79, 39, 88, 80, 41, 85, 25, 96, 68, 55, 5, 74, 8, 9, 65, 18] 
相關問題