2010-08-24 130 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

相关问题