本文介绍了正态分布的拉丁超立方采样 (Python)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在 python 2.7 中使用拉丁超立方体采样技术从正态分布生成 10 个随机数?随机数的范围应该是5到14.

How to generate 10 random numbers from normal distribution using latin hypercube sampling technique in python 2.7? The range of the random number should be 5 to 14.

我尝试了以下

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

谢谢

推荐答案

试试这个:

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 在您的除法中将其截断为零.

Your issue seems to have been integer multiplication etc, which Python truncates to zero in your division.

当我运行它时,我得到:

When I run it, I get:

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

这篇关于正态分布的拉丁超立方采样 (Python)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-17 07:37