平方取中法

在1949年的演讲中,冯·诺伊曼打趣说:“任何考虑产生随机数字的算术方法的人,当然都处于罪恶状态。” 他的意思是,没有真正的“随机数”,只是生产它们的手段,严格的算术程序,就像中间平方法一样,并不是这样的方法。

 

背景

平方取中法是冯·诺依曼提出的。此法开始取一个2s位的整数,称为种子,将其平方,得4s位整数(不足4s位时高位补0),然后取此4s位的中间2s位作为下一个种子数,并对此数规范化(即化成小于1的2s位的实数值),即为第一个(0,1)上的随机数。以此类推,即可得到一系列随机数。

平方取中法是一种生成伪随机数的方法。在实践中,这不是一个好方法,因为它的周期通常很短,而且有一些严重的缺点; 重复足够多次,平方取中法将开始重复生成相同的数字或循环到序列中的前一个数字并无限循环。(首先很难说明取什么样的种子值可保证有足够长的周期;其次容易退化为一常数,甚至退化为零,因为一旦有一个数为零,以后的数都将为零)

解析

将一个数的平方运算分解为一系列的左移操作以及若干次加法。如果忽略进位,每个数位都是由原关键码中的若干数位经求和得到的。因此,两侧数位是由更少的原数位累计而得,越是居中的数位则是由更多的的原数位累积而成。

因此,若截取居中的若干位,可以使得原关键码的各数位对最终地址的影响彼此更为接近。

发布了119 篇原创文章 · 获赞 152 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/weixin_40539125/article/details/97613841