生成真正随机数的唯一方法是采用物理随机过程,如掷骰子或测量放射性衰变之间的时间间隔。Prism,像所有的计算机程序一样,根据定义计算生成“随机”数。由于数列具有可复制性,因此数学家认为这些数字是“伪随机的”。
真正的随机数和伪随机数之间的区别很少会造成问题。对于大多数检验目的而言,计算机生成的随机数具有足够的随机性来模拟数据和检验分析方法。
Prism在计算第一个随机数时需要利用一天时间,因此每次运行程序时,您都会得到一系列不同的随机数。
Prism使用改编自《数值分析方法库》中译本(W. H. Press等人,第二版,剑桥出版社,1992)中所介绍概念的公式,根据高斯分布生成随机值。函数RAN3(定义见《数值分析方法库》)生成均匀分布的随机数,然后由函数GASDEV将其变换为高斯分布,其中平均值为零,标准偏差由您输入。
如果选择相对误差,Prism将首先根据高斯分布计算随机数,其中平均值为零,SD等于您输入的误差百分比。然后,将该百分比乘以理想Y值,得到实际随机值,并将该值与Y值相加。
Prism还可以根据具有任意自由度数(df)的t分布生成随机数。这允许您模拟比高斯分布更广泛的离散。如果df较低,此类分布将非常广泛。如果df较高(超过20左右),此类分布与高斯分布将几乎毫无区别。如果df = 1,与洛伦兹分布(又称“柯西分布”)相同,此类分布将极其广泛(有许多异常值)。Prism使用此公式根据具有自由度df的t分布生成随机数:
在此公式中,Rand表示根据平均值 = 0和SD = 1的高斯分布得出的随机数。为根据具有自由度df的t分布计算随机数,Prism根据高斯分布生成df+1个不同的随机数。
我们采用了WH Press及其同事编辑的《数值分析方法库》第三版第372 - 377页的观点。
注意泊松和二项式随机值与高斯随机值之间的重要区别。
•对于高斯随机值,模拟值等于理想计算值 加上 根据高斯分布得出的随机误差(其中平均值为零,SD由您指定)。我们认为随机值为“正”,但是此随机值在一半时间内是“负”的(平均而言),因此模拟值将在一半时间内小于理想值。
•对于泊松分布,模拟值 是指 使用模拟中计算的理想值作为泊松分布的群体值从泊松分布中得出的随机值。对于高斯误差,您可以在模拟对话框中指定标准偏差。泊松误差则不然。模拟泊松值始终为整数。
•对于二项式误差,模拟值是指 是指 根据二项分布得出的随机变量,其群体比例(或百分比)使用您输入的样本量,由模拟计算得出。
如果您希望用Prism进行模拟是不可能的,用Excel或许有可能。下列方法适用于Excel 2003和更高版本,但不应与早期版本的Excel一起使用。
Excel提供了两个随机数函数。
•RANDBETWEEN(low,high)公式从输入的较低值与较高值之间的范围内随机选择随机整数。结果始终为整数,所以此函数的用处不是很大。
•RAND()函数生成介于0.0和1.0之间的随机值。RAND()函数是一个Excel函数,这至少可以从名称上看出,所以需要后跟圆括号,但是该函数没有输入,所以圆括号中没有任何内容。
如果您希望根据高斯分布生成随机数,则需要对用RAND()函数生成的值进行变换。此Excel公式根据平均值为0.0、SD为1.0的高斯分布计算随机数。
= NORMSINV(RAND())
RAND()函数计算从0到1的随机数。NORMSINV()函数取0到1之间的小数,并表明标准偏差需要多大才能高于或低于累积高斯分布的平均值,以包含整个群体的该小数。
乘以标准偏差,然后加上平均值,您会得到根据高斯分布得出的随机数以及这些随机数的平均值和SD。例如,使用此公式,以根据平均值为100、SD为15的高斯分布进行抽样:
= (NORMSINV(RAND())*15)+100