可以使用三种工具来生成 32 位整数、单精度浮点和双精度浮点格式的统一伪随机数:
mwcrans(3m) 手册页中介绍的函数基于进位相乘的随机数生成器。这些函数还包括以 64 位整数格式提供统一伪随机数的生成器。
此外,shufrans(3m) 手册页中介绍的函数可与其中的任何生成器结合使用以混洗伪随机数的数组,因而为需要它的应用程序提供更大的随机性。注意,没有用于混洗 64 位整数数组的工具。
每个随机数工具都包含每次生成一个随机数(即每个函数调用一个随机数)的例程以及在单个调用中生成随机数数组的例程。每次生成一个随机数的函数提供的数字位于Table 3–17 所示的范围内。
|
在单个调用中生成整个随机数数组的函数允许用户指定生成数所在的区间。Appendix A, 示例给出了一些示例,说明如何生成在不同区间中均匀分布的随机数数组。
注意,addrans 和 mwcrans 生成器通常比 lcrans 生成器更有效,但它们的理论基础还不足够精确。S. Park 和 K. Miller 于 1988 年 10 月在《Communications of the ACM》上发表的《Random Number Generators: Good Ones Are Hard To Find》介绍了线性同余算法的原理。Knuth 编著的《The Art of Computer Programming》第 2 卷中讨论了加法的随机数生成器。