样本大于总人口 Python
我需要一个包含整数的列表,这些整数的数量是nlittle,并且这些整数要在(valuemin, value)这个范围内随机生成。但是我在运行下面的代码时遇到了“样本大于总数”的错误。
nlittle=random.randrange(5,15)
value=random.randint(1,100)
valuemin=int(valore*0.8)
minmoduniform=5*valoremin
maxmoduniform=20*valore
puniform=random.sample(xrange(valuemin,value), nlittle)
rouniform=random.sample(xrange(valuemin,value), nlittle)
我该如何解决这个问题,并且如果nlittle(在我的代码中)大于范围的差值,怎么打印出一个列表呢?
2 个回答
0
// 获取基数
我同意@Jasper的看法。请重新表述你的问题。
一个可能的解决方案是使用,
n= xrange(valuemin,value)
m= xrange(valuemin,value)
puniform=random.sample(n, min(len (n) ,nlittle))
rouniform=random.sample(m, min(len(m) ,nlittle))
// 看看你的代码可能出错的地方。
你的这段代码可能在多个地方遇到问题。
让我们举个例子。
nlittle是一个在5到15之间的随机整数。假设它是15,
值在0到100之间。假设它被赋值为3。
希望valuemin小于3,比如说1。(我不太确定,因为我对valoremin不太了解)
你试图从一个包含2个对象的列表中获取15个对象的样本,这就导致了错误。
可以查看随机库的文档,这会更有帮助:
https://docs.python.org/2/library/random.html我在这里添加了网站上关于random.sample(pop,k)的摘录。
random.sample(population, k)
返回一个长度为k的唯一元素列表,这些元素是从总体序列中随机选择的。用于不重复的随机抽样。
在2.3版本中新增。
返回一个新列表,包含来自总体的元素,同时保持原始总体不变。结果列表的顺序是选择顺序,因此所有子切片也将是有效的随机样本。这允许将抽奖赢家(样本)分成特等奖和二等奖(子切片)。
总体的成员不需要是可哈希或唯一的。如果总体中有重复项,那么每个出现的项都是样本中可能的选择。
要从一系列整数中选择样本,可以使用xrange()对象作为参数。这在从大总体中抽样时特别快速且节省空间:sample(xrange(10000000), 60)。
1
rands = [random.randint(valuemin, value) for x in xrange(nlittle)]
这段代码会在 valuemin
和 value
之间随机选择 nlittle
个整数。