2016年1月3日日曜日

Excel 2013のRAND関数の最小,最大

背景

何かと叩かれることの多い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



検証方法

以下の手順で検証した。
ただし,種数がどのように取得されているのか不明なので,この手順で独立な乱数が発生できているのかどうかも不明である。
  1. 1048576行×125列(=約1.3億個)のRAND関数を入力する。
  2.  セルを再計算させ,1.の乱数列の最小,最大を求める。
  3.  2を5000回繰り返し(=計 約6500億個の乱数),それらの最小,最大を求める。


結果

最小: 1.21080923065620E-12(1160回目の再計算のとき)
最大: 9.99999999999094E-01(680回目の再計算のとき)


なお,計 約6500億個の乱数のなかで,上記最小値・最大値が再度出現することはなかった。

計算時間は約42時間かかった。

0 件のコメント:

コメントを投稿