ページへ戻る
− Links
印刷
Python/正規分布に従う乱数を生成する
の編集 ::
NJF Wiki
xpwiki
:
Python
/
正規分布に従う乱数を生成する
の編集
# y3cda487 の編集
ページ内容:
*random.gauss [#y3cda487] 生成するにはrandom.gaussを使います。 例えば、標準正規分布に従う乱数を生成するには以下のようにします。 import random print(random.gauss(0,1)) 結果: -1.5001413318395698 など。 第一引数が平均値で第二引数が標準偏差です。 他にほぼ同様のメソッドとしてrandom.normalvariateがあります。 使い方も全く同じで第一引数が平均値で第二引数が標準偏差です。 ただし、gaussの方が高速で動作します。normalvariateはスレッドセーフのようです。(検証はしていません。) 一つだけ生成しても実際に正規分布になっているかどうか分からないので、100,000個の乱数を生成して小数第二位で四捨五入し、度数を数える以下のようなプログラムを作ってみました。 import random dataCnt = {} for i in range(100000): d = round(random.gauss(0,1),1) if d in dataCnt: dataCnt[d] += 1 else: dataCnt[d] = 1 sortedData = sorted(dataCnt.items()) for k in sortedData: print("%.2f\t%d" % (k[0],k[1])) この結果を表計算ソフトに貼り付けてグラフを描くと次のようになりました。 &ref(chart.png,mw:480,mh:360); 乱数なので少しばらつきがありますが、ほぼ正規分布になっていることが分かります。 Pythonにはこれ以外にも、対数分布、ガンマ分布やパレート分布、ワイブル分布などが標準で実装されています。 詳しくは[[こちらのドキュメント:https://docs.python.org/ja/3/library/random.html]]で。
編集の要約:
Q & A 認証:
ページ更新時は次の質問にお答えください。(プレビュー時は必要ありません)
Q:
「名古屋」の読みがな?(ひらがなで)
A:
お名前:
タイムスタンプを変更しない
テキスト整形のルールを表示する
[1]
Links list
(This host) = https://njf.jp
(This host)
/cms/modules/xpwiki/?cmd=edit&help=true&page=Python%2F%E6%AD%A3%E8%A6%8F%E5%88%86%E5%B8%83%E3%81%AB%E5%BE%93%E3%81%86%E4%B9%B1%E6%95%B0%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B