【发布时间】:2012-07-08 04:16:32
【问题描述】:
我想生成具有均值为零和方差为 2.25 的高斯分布的离散随机数(用于 1000 个集合)。我在书NUMERICAL RECIPES in Fortran 90,第7章,第7.2节看到,函数gasdev用于此,但我不知道如何使用此函数。
如何使用集合数以及均值和方差?
谢谢
【问题讨论】:
标签: fortran90
我想生成具有均值为零和方差为 2.25 的高斯分布的离散随机数(用于 1000 个集合)。我在书NUMERICAL RECIPES in Fortran 90,第7章,第7.2节看到,函数gasdev用于此,但我不知道如何使用此函数。
如何使用集合数以及均值和方差?
谢谢
【问题讨论】:
标签: fortran90
IMO,如何使用 NR 中的函数最好用 NR 本身编写。
如果您需要生成正态分布的实数,请在谷歌上搜索“Box-Muller 变换”,或直接转到Wiki page 和/或这里的几十个问题和答案。
如果您的要求是生成整数(您的意思是通过询问离散随机数吗?),我会说最简单的方法is to compute the cdf。
【讨论】:
gasdev 返回正态分布随机变量,平均值为0.0,方差为1.0,通常写为N(0, 1)。您应该使用方差缩放结果以匹配所需的分布。请注意,如果x 是N(0, 1)(由gasdev 返回),则y = a + b*x 是N(a, b^2),即均值为a 和方差为b^2 的正态分布随机变量。
(顺便说一句,如果这是一个家庭作业,它应该被正确标记)
【讨论】:
gasdev 使用的伪随机数生成器的种子。您应该在第一次调用 gasdev 时传递一些负值,然后进一步传递 0。