样本大于总人口 Python

0 投票
2 回答
4959 浏览
提问于 2025-04-18 01:19

我需要一个包含整数的列表,这些整数的数量是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)]

这段代码会在 valueminvalue 之间随机选择 nlittle 个整数。

撰写回答