[FLASH]Math.random()の頻度分布
Tags: ActionScript, FLASH
various functions with different distributions for Math.random() « Pixeleroで興味深いことをやっていたのでFlashで実践。Math.random()の頻度分布は0以上1未満の範囲でだいたいフラットな形状になる。じゃあ例えばこれは?
f = (Math.random()+Math.random()+Math.random()+Math.random()) / 4
フラットな頻度分布にならず0.5近傍に頻度のピークがくる。なんでだろ。パっと理由が思いつかない。以下にデモとActioScriptソース等。横軸が関数の返す値、縦軸が頻度でスライダーをいじると関数形が変わります。
[追記:2008/06/08]
言及されていた。[ActionScript3.0](標準)正規分布乱数 | moriBlog
中心極限定理というらしい。ちなみにMath.random()を10万回足し合わせて10万で割ると値はほぼ0.5。相対誤差0.1%未満になる。Math.random()だけを使って特定の数値を作ることが可能なわけだ。
[追記:2008/06/09 11:00]
Flex版を作成した。グラフ作成なんかはFlexで作るのが簡単でいいかも。ただファイルサイズがでかくなるのがネック。
Related posts:
Title Link
Trackback URL
Comments
5 Responses to “[FLASH]Math.random()の頻度分布”
Leave a Reply
![ランダム関数頻度分布 [Flash]ランダム関数頻度分布](http://boreal-kiss.com/flash/ex/40/randomtest.gif)
![ランダム関数頻度分布その2 [Flex]ランダム関数頻度分布その2](http://boreal-kiss.com/flash/ex/41/randomtest2.gif)


乱数をn回加算してnで除算した値が、乱数の中心の値になる確率が高いのは、
厳密には中心極限定理ってので証明できるんですが、
直観的なイメージとしては、
例えば4回Math.random()をやると、
乱数だけに値が散らばる傾向(0.2, 0.4, 0.6, 0.8みたいな)にあって、
n/2という和になりやすいって感じでしょうか。
1に近い値と0に近い値が同確率で出現するというか。。。。
わかりにくいですね。。。。
わざわざ補足ありがとうございます。が、今イチイメージが湧きませんでした。サイコロを振って6の目が出る確率が試行回数増やしていくと1/6にどんどん近づいて行くっていうやつですかね。
すいません、逆にわかりづらくて;;
おっしゃる通り、
ベースになるのは、回数重ねると6の目が1/6ででるっていう大数の法則ですよね。
math.random()を何回もやると0〜1の間に均等に値が散らばるので、
その期待値(平均値)は0.5になるってことですね。
よけい混乱させてすいませんでした。。。。
ああなるほど。それだとサイコロの場合と同じ考えですね。
サイコロを2つ振って、合計した数の分布を考えよう。