此为 Mathematica 4 文档,内容基于更早版本的 Wolfram 语言
查看最新文档(版本11.2)

3.2.3 伪随机数

伪随机数的生成

这里给出 3 个伪随机数列表

这是 0 与 1 之间的 30 位的伪随机实数

这里给出 100 和 200 之间内含的 8 个伪随机数的列表

如果反复调用 Random[],将得到一个 "典型" 的数列,它们没有特定的类型. 有许多使用这些数的方法. 使用伪随机数的一个常见方法是进行数值假设检验. 例如,如果用户 相信两个符号表达式在数学上是相等的. 可以通过给符号参数插上 "典型的" 数值的值. 然后比较数值结果来进行检验. ( 如果要这样做的话,在数值准确 度问题上,在可能没有唯一值的复变量的函数上,都应当仔细小心).

这是一个符号方程

用随机数值代入表明方程不总是为真

伪随机数的其它常见用法包括模拟随机过程,概率空间的采样. Mathematica 生成的伪随机数总是在指定范围上的均匀分布.
Random 与其它的 Mathematica 函数不同,每次调用它时,都将得到不同 的结果. 因此,如果在计算中使用 Random 在不同的时机会得到不同的答案.
Random[ ] 得到的序列在多数意义下并不是 "真正随机的",尽管 实际上它们应当是 "足够随机的". 事实上,这个序列是通过使用从一个特定 起点开始的确定数学算法生成的. 如果给出相同的起点,将得到相同的序列.
Mathematica 启动时,它取时钟时刻 ( 用一秒的一小部分度量 ) 作为伪随机 生成器的起点. 因此,两个不同的 Mathematica 进程几乎总是给出不同的 伪随机数序列.
如果用户想确定总是得到相同的伪随机数序列,可以使用 SeedRandom 明显 地给伪随机数生成一个起点.

重设伪随机数生成器的起点

这是三个伪随机数

In[7]:=
Out[7]=

如果重设伪随机数生成器的起点与上例相同. 则得到相同的伪随机数序列

In[8]:=
Out[8]=

每调用一次 Random,伪随机数生成器的内部状态就被改变,这意味着在辅助运算中调用 Random,将会影响主运算中 Random 返回的数.要避免这个问题,可以在辅助运算之前保存 $StateRandom 的值,以后在恢复它.

使用 Block$RandomState 的值限制在局部. 在生成第一个列表之后,伪随机数生成器的状态被恢复