2013-07-26 89 views
1
help(random.sample) 

說,「由此產生的名單是選擇順序,使所有的子片段也將是有效的隨機樣本」random.sample和「選擇順序」

是什麼選擇順序是什麼意思?如果沒有選擇順序的要求,結果列表將如何顯示?子切片如何不能成爲有效的隨機樣本?

Upd據我瞭解,這意味着結果將不會以任何方式排序。

回答

2

random.sample(population, k)

給定一個​​序列返回長度k與(選擇的或)選擇元素的列表從​​。 選擇順序順序,其中每個元件的被選擇(隨機)。因此,這份名單不是按人口中的指標排序,而是按選擇的方式進行排序。因此返回列表中的任何-子切片也是人口隨機抽樣。

實施例 -

>>> 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]

+0

does「中選擇順序」的意思是「不分類」? –

+0

'範圍(1,13)'看起來更好,順便說一句 –

+0

@ user1307996燁「的選擇順序」是指「的順序,他們選擇了」 - 所以,你可以選擇一個12,然後是5,那麼1等,使你的清單。你隨機挑選它們並追加到返回列表中 – RedBaron

2

完整的幫助字符串是:

樣品(個體,人口,k)的random.Random實例 的方法]選擇ķ從羣體序列唯一的隨機元素。

返回包含人口元素,同時 離開原來的人口不變的新名單。結果列表是 按選擇順序,這樣所有的子片段也將是有效的隨機 樣本。這允許抽獎獲獎者(樣本)被分成 成爲大獎和第二名獲獎者(子公司)。人口

成員不一定是哈希的或獨特的。如果 人口包含重複,則每個事件在樣本中都是可能的 選擇。

要選擇在一個範圍內的整數的樣品,使用的xrange作爲參數。 這是特別快速和高效的空間用於從 人口衆多采樣:樣品(x範圍(10000000),60)

因此,採取抽獎的例子;在鼓內滾動的所有票都是​​,並且k是所畫的票數。所有抽獎的集合是隨機sample的結果。

sample沒有排序,也沒有以任何方式改變,它是在它繪製順序。如果你想象你去抽獎,他們先抽出100張票,然後丟棄它們,然後開始畫實際的票,那套獲獎票仍然是​​的隨機sample。這相當於取第一個較大的切片sample

什麼它說,是任何一個樣品的任何分片,仍然是一個有效的隨機樣本。

要回答你的問題;

選擇順序只是繪製值組成樣本的順序。

不能確保選擇順序樣品可以以某種方式來分類的。

下面的代碼可以想像創建的隨機樣本確保選擇順序:

def sample(population, k): 
    sample = [] 
    popsize = len(population)-1 
    while len(sample) <= k: 
     r = population[random.randint(0, popsize] 
     if r not in sample: 
      sample.append(r) 

    return sample 
+0

不會發生最大的值「不能確保選擇順序,樣品可以以某種方式進行排序。」 random.sample可以返回排序序列,你不能強迫它。 'random.sample([1],1)' –

+0

如,如果你不要求樣品有選擇順序,那麼就沒有什麼可以阻止你選吧。 – will