2012-10-14 75 views
1

如何使用python 2.7中的拉丁超立方體採樣技術從正態分佈生成10個隨機數?隨機數的範圍應爲5至14拉丁超立方體從正態分佈採樣(Python)

我嘗試以下

import random 
from random import randint 
iter = 10 
segSize = 1/iter 
for i in range(iter): 
segMin = i * segSize 
point = segMin+ (random.normalvariate(7.5,1)*segSize) 
pointValue = (point * (14 - 5)) + 4 
print point 
print pointValue 

感謝

+0

檢查我的嘗試。它會生成0,4,0,4 ..... – mrn

回答

1

試試這個:

def rand: 
import random 
from random import randint 
iter = 10 
segSize = 1/float(iter) 
for i in range(iter): 
     segMin = float(i) * segSize 
     point = segMin + (random.normalvariate(7.5,1) * segSize) 
     pointValue = (point * (14 - 5)) + 4 
     print point 
     print pointValue 

您的問題似乎已經整數乘法等,Python在你的部門截斷爲零。

當我運行它,我得到:

0.686848045493 
10.1816324094 
0.871425699273 
11.8428312935 
1.08794202088 
13.7914781879 
1.08502172623 
13.7651955361 
1.24462345735 
15.2016111161 
1.10687801576 
13.9619021418 
1.1394488663 
14.2550397967 
1.37407532844 
16.3666779559 
1.54666717385 
17.9200045647 
1.6465869841 
18.8192828569 
+0

非常感謝。有效。只是一個查詢,我如何保持5至14之間的數字? – mrn

+1

這取決於。你是否受限於正常分佈? [Here](http://stackoverflow.com/questions/6088077/how-to-get-a-random-number-between-a-float-range-python)[是](http://effbot.org/ pyfaq/how-do-i-generate-random-numbers-in-python.htm)[some](http://effbot.org/librarybook/random.htm)[鏈接](http://docs.python。 org/library/random.html)如果不是。如果是這樣,你在做什麼?正態分佈不是一個範圍,它是一種趨勢的度量。如果你必須使用正態分佈,請描述更多你在做什麼。 – learner

+0

僞RN有幫助......再次感謝你。 – mrn