3.2.3 伪随机数伪随机数的生成 这里给出 3 个伪随机数列表
Out[1]= |  |
这是 0 与 1 之间的 30 位的伪随机实数
Out[2]= |  |
这里给出 100 和 200 之间内含的 8 个伪随机数的列表
Out[3]= |  |
如果反复调用 Random[],将得到一个 "典型" 的数列,它们没有特定的类型. 有许多使用这些数的方法. 使用伪随机数的一个常见方法是进行数值假设检验. 例如,如果用户 相信两个符号表达式在数学上是相等的. 可以通过给符号参数插上 "典型的" 数值的值. 然后比较数值结果来进行检验. ( 如果要这样做的话,在数值准确 度问题上,在可能没有唯一值的复变量的函数上,都应当仔细小心). 这是一个符号方程
Out[4]= |  |
用随机数值代入表明方程不总是为真
Out[5]= |  |
伪随机数的其它常见用法包括模拟随机过程,概率空间的采样. Mathematica 生成的伪随机数总是在指定范围上的均匀分布. Random 与其它的 Mathematica 函数不同,每次调用它时,都将得到不同 的结果. 因此,如果在计算中使用 Random 在不同的时机会得到不同的答案. 由 Random[ ] 得到的序列在多数意义下并不是 "真正随机的",尽管 实际上它们应当是 "足够随机的". 事实上,这个序列是通过使用从一个特定 起点开始的确定数学算法生成的. 如果给出相同的起点,将得到相同的序列. 当 Mathematica 启动时,它取时钟时刻 ( 用一秒的一小部分度量 ) 作为伪随机 生成器的起点. 因此,两个不同的 Mathematica 进程几乎总是给出不同的 伪随机数序列. 如果用户想确定总是得到相同的伪随机数序列,可以使用 SeedRandom 明显 地给伪随机数生成一个起点. 重设伪随机数生成器的起点 这是三个伪随机数
Out[7]= |  |
如果重设伪随机数生成器的起点与上例相同. 则得到相同的伪随机数序列
Out[8]= |  |
每调用一次 Random,伪随机数生成器的内部状态就被改变,这意味着在辅助运算中调用 Random,将会影响主运算中 Random 返回的数.要避免这个问题,可以在辅助运算之前保存 $StateRandom 的值,以后在恢复它.使用 Block 把 $RandomState 的值限制在局部. 在生成第一个列表之后,伪随机数生成器的状态被恢复
Out[9]= |  |
|