random.sample和“选择顺序”

时间:2013-07-26 07:57:11

标签: python random random-sample

help(random.sample)

说“结果列表是选择顺序,这样所有子切片也将是有效的随机样本”

选择顺序是什么意思?如果没有选择顺序的要求,结果列表会如何?子切片怎么可能不是一个有效的随机样本?

更新据我了解,这意味着结果不会以任何方式排序。

2 个答案:

答案 0 :(得分:2)

完整的帮助字符串是:

  

随机的样本(self,population,k)方法。随机实例   从群体序列中选择k个独特的随机元素。

     

返回包含来自总体的元素的新列表   让原始人口保持不变。结果列表是   在选择顺序中,所有子切片也将是有效随机的   样本。这允许抽奖获奖者(样本)被分割   成为大奖和第二名的获奖者(下属)。

     

人口中的成员不需要是可以清洗或独特的。如果   人口包含重复,然后每次出现都是可能的   选择样本。

     

要选择整数范围内的样本,请使用xrange作为参数。   这对于从a采样来说尤其快速且节省空间   人口众多:样本(xrange(10000000),60)

以抽奖为例;滚筒内滚动的所有门票都是population,而k是抽出的门票数量。绘制的所有故障单的集合是随机sample的结果。

sample没有排序,也没有以任何方式改变,它按照绘制顺序排列。如果你想象你去了一个抽奖活动,并且他们先抽了100张票,然后丢弃它们,然后开始抽取实际的票,那套中奖票仍然是sample的{​​{1}}。 }。这相当于拍摄第一个较大的population

它的含义是,任何样本的任何子切片仍然是有效的随机样本。

回答你的问题;

选择顺序只是绘制值以组成样本的顺序。

无需确保选择顺序,可能会以某种方式对样本进行排序。

您可以想象以下代码创建一个确保选择顺序的随机样本:

sample

答案 1 :(得分:2)

random.sample(population, k)

给定population序列,它会返回一个长度为k的列表,其中包含从population中选择的元素(或已选择)。 选择顺序是指 order ,其中选择了每个元素(随机)。因此,列表不按人口中的索引排序,而是按选择的方式排序。因此,返回列表的任何子片段也是人口的随机样本。

示例 -

>>> import random
>>> population=[1,2,3,4,5,6,7,8,9,10,11,12,]
>>> ls=random.sample(population,5)
>>> ls
[1, 11, 7, 12, 6]

返回的列表按照选择的顺序包含元素。因此,您可以在ls上使用子切片而不会丢失随机性

>>> ls[:3]
[1, 11, 7]

如果未强制执行选择排序,您可以使ls看起来像

[1,6,7,11,12]

然后,子切片将不是完全随机的,而是受切片长度的约束。例如。在长度为3的子切片中不会出现最大值(在这种情况下,这将是[1, 6, 7]