用java 语言产生符合泊松分布的随机数
一、实验目的
利用随机数函数rand 来产生的随机数具有一定局限性,rand 函数运用线性同余法产生的是伪随机数,即每次都一样。必须加上时间作为种子,因此不直接利用rand 函数
二、线性同余法的选取
同余法是Lehmer 于1951年提出来的,此方法是利用数论中的同余运算原理来产生随机数,有线性同余法、非线性同余法等,其中线性同余法法又分为加同余法、乘同余法以及混合同余法。同余法是现在发展迅速且使用普遍的方法之一。首先介绍下线同余法。 线性同余法的递推式为:
1(mod ) (0,1,2,)n n x ax c m n +=+=
式中参数,a c 和m 分别称为乘、增量和模,0x 为种子。如果这些参数和种子(初值) 都指定序列也就确定下来了。通常取
(0,1,2,)n n x r n m ==作为区间(O ,1)上均匀分布(0,1)U 的随机数。从上可以看出当0c =,为乘同余法;当1,0a c =≠时,为加同余法,否则称为混合同余法。按惯例,当强调使用某方法产生随机数时,常使用某方法(随机数)发生器的称呼。
线性同余法有如下特点:
(1)01i x m ≤≤+。
(2)适当选取,,m a c 可使i x 循环,无论0x 取何值,其循环顺序相同,其循环周期称为发生器周期,记为T 。若T m =,则称之为满周期。