生成真正随机数的唯一方法是通过物理随机过程,例如掷骰子或测量放射性衰变之间的间隔。Prism与所有计算机程序一样,都是通过预定义的计算来生成“随机”数。由于数列是可重现的,数学家们称这些数为“伪随机数”。
真正随机数与伪随机数之间的区别很少会造成问题。对于大多数用途而言,计算机生成的随机数已经足够随机,足以用于模拟数据和测试分析方法。
Prism在计算第一个随机数时会采用当前时间,因此每次运行程序时,您都会得到一组不同的随机数序列。
Prism 通过采用《C语言数值食谱》(W. H. Press 等著,第二版,剑桥大学出版社,1992年)中提出的思路改编的例程,从高斯分布中生成随机值。 函数 RAN3(定义于《C语言数值食谱》中)生成均匀分布的随机数,而函数 GASDEV 则将其转换为均值为零、标准偏差为您输入值的高斯分布。
如果您选择相对误差,Prism 会首先从均值为零、标准差等于您输入的百分比误差的高斯分布中计算一个随机数。然后,它将该百分比乘以理想的 Y 值,从而得出实际值,并将该值加到 Y 值上。
Prism 还可以从自由度 (df) 为任意值的 t 分布中生成随机数。这使您能够模拟比高斯分布更宽的散布。如果 df 较低,该分布范围非常宽;如果 df 较高(大于 20 左右),则几乎无法与高斯分布区分开来。 若 df=1,该分布极为宽广(存在大量异常值),且与洛伦兹分布(亦称柯西分布)完全一致。Prism 使用以下公式生成自由度为 df 的 t 分布随机数:

在此