生成随机长度的随机列表(排序)

时间:2018-05-18 21:00:35

标签: python python-3.x

我正在从这个网站处理一个问题:

https://www.practicepython.org/exercise/2014/03/05/05-list-overlap.html

我正在进行的练习要求我们生成两个不同长度的随机整数列表。这就是我所拥有的:

import random 
n1 = random.sample(range(1,30), random.randint(5,20))
n2 = random.sample(range(1,40), random.randint(21,40))
n3 = set(n1) & set(n2)
print(n3)

出于某种原因,这种情况有时会发生 这是它没有运行的截图。 enter image description here 它显然与范围的大小有关,因为我使它们越大,我返回错误的频率越低。但是,我想了解为什么它首先抛出错误,所以我可以一起避免它。

提前致谢。

2 个答案:

答案 0 :(得分:2)

这是random.sample

的记录
  

返回从总体中选择的k长度的唯一元素列表   序列。用于无需替换的随机抽样。

您的屏幕截图显示您使用:

n2 = random.sample(range(1, 30), random.randint(21, 40))

这意味着您可以尝试从30个数字的池中获取多达40个样本,无法替换,这是不可能的。您在实际问题中代码中提供的示例并不代表您在现实中尝试做的事情。

答案 1 :(得分:2)

random。sample(population,k)从人口

返回唯一的k元素

在您的情况下,您的人口是[1,2,3,... 39]。你的k = random.randint(21,40)。因此,只要选择的k值为40,您就会收到异常。