平方取中法()是個產生偽隨機數的方法,由馮·諾伊曼;}-在1946年提出。
算法:
選擇一個m位數N_i作為種子。
計算N_i^2
若N_i^2不足2m個位,在前補0。在這個數選中間m個位的數,即10^{\lfloor \frac{m}{2} \rfloor + 1}至10^{\lfloor \frac{m}{2} \rfloor + m}的數,將結果作為N_{i+1}。
優劣
平方取中法並不是很好的伪随机数生成方法,因為其週期通常很短,而且有很大的弱點(例如當起始數值是k \times 10^m便不斷重覆)。不過這些問題很容易察覺,再加上它十分快速,適用於ENIAC,不無可取之處。
例子
675248 → 455 959 861 504
959861 → 921 333 139 321
333139 → 110 981 593 321
981593 → 963 524 817 649
524817 → 275 432 883 489
...
参见
- 線性同餘方法
- Blum Blum Shub
评论 (0)