背景
何かと叩かれることの多いRAND関数ではあるが,https://support.microsoft.com/ja-jp/kb/828795 を信じるならば,10の13乗以上の周期をもつということになろう。ただし,この実装が誤っているという指摘もある。
当方の興味としては,周期そのものよりも,最小,最大がどうなるかに興味があったので,実験的に検証した。
検証環境
Excel 2013(64bit) + Windows 10 Pro(64bit)CPU: Core i7 2.4GHz
RAM: 16GB
仮想メモリ: OFF
検証方法
以下の手順で検証した。ただし,種数がどのように取得されているのか不明なので,この手順で独立な乱数が発生できているのかどうかも不明である。
- 1048576行×125列(=約1.3億個)のRAND関数を入力する。
- セルを再計算させ,1.の乱数列の最小,最大を求める。
- 2を5000回繰り返し(=計 約6500億個の乱数),それらの最小,最大を求める。
結果
最小: 1.21080923065620E-12(1160回目の再計算のとき)最大: 9.99999999999094E-01(680回目の再計算のとき)
なお,計 約6500億個の乱数のなかで,上記最小値・最大値が再度出現することはなかった。
計算時間は約42時間かかった。
0 件のコメント:
コメントを投稿