2014-04-04 27 views
0

我需要含有基數nlittle是必須在(valuemin,值)隨機整數的列表,但我得到了錯誤的樣品大於人口以下運行樣品比人口更大的Python

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(在我的代碼中)大於xrange的差異,就打印一個列表? 泰

+1

「打印一個列表」包含什麼?你的問題是,你正在嘗試從長度爲5的列表中獲取大小爲10的樣本,這是不可能的。你最初的目標是什麼? – Jasper

+0

我需要一個包含整數的基數nlittle必須是隨機的(valuemin,value)@Jasper – user3250719

+0

然後你應該改述你的問題。 – Jasper

回答

0
rands = [random.randint(valuemin, value) for x in xrange(nlittle)] 

此挑選valueminvalue之間nlittle整數。

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 值爲100之間0說它已分配3. Hopeing的隨機整數,valuemin均少於三個說1.(我不能當然,因爲我不知道關於valoremin)

你試圖從2個對象的列表中得到15個對象的樣本,它給了你的錯誤。

在這裏查看隨機庫的documentatoin。這將是更有幫助 https://docs.python.org/2/library/random.html

我在下面的網站random.ample(pop,k)添加一個摘錄。

random.sample(人口中,k)

返回唯一元素的第k長度列表 從羣體中選擇的序列。用於沒有 替換的隨機抽樣。

版本2.3中的新功能。

返回一個新的列表,其中包含來自總體的元素,而 保持原始人口不變。結果列表是 選擇順序,以便所有子片段也將是有效的隨機 樣本。這允許抽獎獲獎者(樣本)被分成 成爲大獎和第二名獲獎者(子公司)。

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

要從整數範圍中選擇一個樣本,請使用xrange()對象作爲參數 。這對於從大量樣本中抽取 特別快且節省空間:樣本(xrange(10000000),60)。

+0

謝謝Vasif! – user3250719