ページへ戻る
+ Links
印刷
Python/正規分布に従う乱数を生成する
の編集 ::
NJF Wiki
xpwiki
:
Python
/
正規分布に従う乱数を生成する
の編集
# ue41f4eb の編集
ページ内容:
*おまけ:中心極限定理と一様分布から標準正規分布に従うランダムな数を生成する [#ue41f4eb] 計算コストが高くて実用性はないのですが、一様分布と中心極限定理から標準正規分布に従うランダムな数を生成してみます。 中心極限定理とは、母集団の分布が何であれそこから抽出された無作為標本の平均値は正規分布に従い、平均値は母集団と同じになり、標本の分散は母集団の分散の標本の大きさの平方根分の一となるというものです。 [[Wikipedia 中心極限定理:https://ja.wikipedia.org/wiki/%E4%B8%AD%E5%BF%83%E6%A5%B5%E9%99%90%E5%AE%9A%E7%90%86]] そこで、たいていのプログラミング言語に実装されているランダムな一様分布を使って標準正規分布を導くことを考えてみます。 区間(a,b)の一様分布の平均は(b-a)/2、分散は(b-a)^2/12と分かっていますから、これと中心極限定理を使います。nを標本の大きさとして、平均0、分散1の標準正規分布となるようにa,bについての連立方程式を解くと、a=b=sqrt(3n)と求まります。 nを100として、標準正規分布に従うランダムな数を返す関数を作ると以下のようになります。 def cltRandom(): n = 100 sqr3 = 2 * math.sqrt(3*n) x = 0 for i in range(n): x += (random.random() - 0.5) * sqr3 return x / n これを前節と同じように100,000回実行して小数第二位で四捨五入し、度数を数えてグラフを描くと以下のようになりました。 &ref(chartClt.png,mw:480,mh:360); 前節のグラフとほぼ同じになり、予想通り標準正規分布に従っていることが分かります。 この関数は、100回も乱数を生成するので実行速度はかなり遅く実用性はありません。 しかし、中心極限定理を実際に確かめられる簡単な例となっており、統計での正規分布の重要性を理解できると思います。
編集の要約:
Q & A 認証:
ページ更新時は次の質問にお答えください。(プレビュー時は必要ありません)
Q:
日本の首都は?(漢字で)
A:
お名前:
タイムスタンプを変更しない
テキスト整形のルールを表示する