2010-08-24 81 views
16

如何在Python中給定範圍的數字中生成一個固定給定長度的隨機(但唯一的和排序的)列表?如何從給定範圍生成固定長度值的隨機列表?

類似的東西:

>>> list_length = 4 
>>> values_range = [1, 30] 
>>> random_list(list_length, values_range) 

[1, 6, 17, 29] 

>>> random_list(list_length, values_range) 

[5, 6, 22, 24] 

>>> random_list(3, [0, 11]) 

[0, 7, 10] 
+3

是否有重複? (即允許'[1,4,7,1]'作爲輸出?) – kennytm 2010-08-24 17:44:39

回答

34

像這樣的隨機樣本返回唯一序列項目列表。不要將此與該範圍內的隨機整數混淆。

>>> import random 
>>> random.sample(range(30), 4) 
[3, 1, 21, 19] 
+6

'random.sample'返回序列的* unique *項目列表。 – phadej 2010-08-24 17:49:34

+0

謝謝! 我想添加分配結果給一個變量,並在其上執行variable.sort()來匹配上面的例子,但我沒有明確要求它,所以,你的解決方案是最好的。 – user63503 2010-08-24 18:00:31

8

random.randrange和列表理解的結合是可行的。

import random 
[random.randrange(1, 10) for _ in range(0, 4)] 
+0

您應該考慮使用_(下劃線)變量而不是count。 – Soravux 2012-09-04 15:58:14

+0

@Soravux:同意。改變。謝謝。 – 2012-09-05 09:04:36

+2

爲什麼使用_(下劃線)更好? – Norfeldt 2012-10-09 12:21:41

相關問題