更新时间:2022-08-25 15:34
平方取中法(midsquare method)是产生[0,1]均匀分布随机数的方法之一,亦称冯·诺伊曼取中法,最早由冯·诺伊曼(John von Neumann,1903-1957)提出的一种产生均匀伪随机数的方法。此法将一个2s位十进制随机数平方后得到的一个4s位数,去头截尾取中间2s位数作为一个新的随机数,重复上述过程可得到一个伪随机数列。
平方取中法是冯·诺依曼提出的。此法开始取一个2s位的整数,称为种子,将其平方,得4s位整数(不足4s位时高位补0),然后取此4s位的中间2s位作为下一个种子数,并对此数规范化(即化成小于1的2s位的实数值),即为第一个(0,1)上的随机数。以此类推,即可得到一系列随机数。
式中,是2s位的十进制数,表示将除以后取整,表示以为模。
此法优点是计算简单,在历史上曾令人很感兴趣,但它有许多缺点:首先很难说明取什么样的种子值可保证有足够长的周期;其次容易退化为一常数,甚至退化为零,因为一旦有一个数为零,以后的数都将为零。
平方取中法有两种推广形式:
(1)乘法取中法(mid-product method)
(2)常数乘子法(constant multiplier method)
以上两式中意义如式(1),k为2s位十进制常数。
平方取中法及其两种推广的成功与否与种子及常数的选取关系很大。一般说来,s值很大时,种子取值也很大,可使退化推迟,周期加长。
【例1】取,模为10 000,则有
【例2】取,则有
可见,若取种子为6 500,则周期为1。若在某一随机数列中出现6 500,则以后的数都是2 500,即进入退化状态。