伪随机数,是在数字计算机上用数学方法产生的、统计意义下具有在区间(0,1)上均匀总体简单子样性质的数值序列rn|n=1,2,…;0≤rn≤1。
伪随机数_伪随机数 -伪随机数
用蒙特卡罗法模拟求解一个实际问题,要用到各种不同分布的随机变量、随机向量和随机过程η的抽样序列{ηn|n=1,2,…},称它们为随机数。如常用的二项分布随机数、均匀分布随机数、二维正态分布随机数等,其中最基本、最重要的是区间(0,1)上均匀分布的随机数。因此,如何在计算机上产生伪随机数备受重视。
在一台b)进制(如二进制或十进制)、尾数字长为k位的计算机上,不考虑符号和阶码,可以表示bk个不同的数,即0,1,2,…,bk-1。在数学计算机上产生伪随机数,就是选取m个整数x1,x2,…,xm作为初值和一个适于递推计算的数学公式
,把0,1,2,…,bk-1或其中的部分序列的自然顺序打乱重排,得到一个确定的、周期的、又在统计意义下具有在区间(0,1)上均匀总体简单子样性质的数值序列
,以此作为区间(0,1)上均匀分布的随机数使用。序列{rn}是完全确定的,具有周期性,不同于真正均匀分布的随机数,故称为伪随机数。在计算机上用数学方法产生随机数,具有易于实现、产生的速度快和对模拟求解的问题可以进行复算检查等许多特点,成为计算机上最常用的一类产生均匀分布随机数的方法。
选用不同的递推计算公式
,就得到了不同的产生伪随机数的方法。为得到产生速度快的算法,多取m=1,给出一个最大长度不超过bk的不重复的数序列。这类方法中,有早期提出的中平法、乘积取中法和移位相加法等;比较常用的有线性、非线性移位寄存器法及同余法等。在同余法中,又可分为加同余法
,乘同余法
和混合同余法
,λ为某一乘子,其中最常用的为乘同余法。这里,模M通常取为bk或bk-1(当bk-1为素数时);x