• ベストアンサー

乱数を確認する方法について

プログラムをかいて正規乱数を発生させたのですが、それがきちんと正規乱数になっているか確かめる方法がわかりません。

質問者が選んだベストアンサー

  • ベストアンサー
noname#21649
noname#21649
回答No.5

ソフト作成上の一般的な注意をあげましょう。 まず区間.統計では10-13程度の区間で最大値と最小値の間を分割します。疑似乱数の検定で使う場合には.1区間10個程度が集まるような状態にします。 区間は.1区間を大体10分割して位置が移動できるようにします。これは.区間内に偏って存在する場合や周期が存在する場合に.移動すると変なピークが現れる場合があります。周期の存在については.ある程度の個数(2個以上で適当な個数まで)での移動平均を求める演算を行い.この平均値を重ねて作図すると.周期が存在する場合には.ある特定の数で突然グラフの形状が変化します。周期を比較的簡単に求めることができます。 もし.2個・または3個対で使う場合には.平面または立体での偏りを検討する必要があります。一般に使われている組み込み関数の乱数を使い[0,1]の範囲の立体の各面に投影すると.たしか13本の直線に収束することは有名ですね。

その他の回答 (4)

  • sen-sen
  • ベストアンサー率31% (66/211)
回答No.4

>検定の仕方についてうかがいたいのですが、 >どのような方法で行うのがよいのでしょうか 素人考えでは、 ・乱数の分布が一様かどうかを調べる。 ・同じ数が繰り返すまでの間隔に偏りが無く、かつ、その分布が適当にばらついていることを調べる。 ・ある決まったカテゴリーの数が続けて出る回数の分布に偏りが無く、かつ、適当にばらついてことを調べる。 ・ある特定の数字列がある周期を持って繰り返していないかどうかを調べる。 などが思い浮かびます。 基本的な統計学の教科書を読めば問題は解決するのではないでしょうか。

noname#21649
noname#21649
回答No.3

統計の本を見つけて.「適合度の検定」を行ってください。 面倒ならば「科学技術サプルーチンパッケージ」あたりか.言語のマニュアルを探してみるとあるはずです。

  • sen-sen
  • ベストアンサー率31% (66/211)
回答No.2

発生させた乱数を規格化してから標準正規分布関数の逆関数を使って得られたデータに対して、乱数になっているかどうかを検定してみては、いかがでしょうか。

goodweather
質問者

補足

早速の回答ありがとうございます。検定の仕方についてうかがいたいのですが、どのような方法で行うのがよいのでしょうか

  • nubou
  • ベストアンサー率22% (116/506)
回答No.1

横軸に発生データ縦軸にそのデータの発生頻度でグラフを作って 平均と標準偏差を使って規格化し(z=(x-μ)/σ) N(0,1)と比較してみてはどうでしょう

関連するQ&A

  • 正規乱数とは

    学校の宿題ですがまず正規乱数の発生は2つの方法があるというのですが、意味がわかりません。 正規乱数でなんですか。 なぜ12個足して6をひくのですか。 また逆関数法の=NORMSINV(RAND()) てどういう意味ですか。 正規乱数の発生 1 一様乱数を12個足して6を引く方法 =RAND()+RAND()+・・・・+RAND() - 6 12個分 2 逆関数法 =NORMSINV(RAND())

  • 乱数について

    こんばんは。 何度も申し訳ありませんが、今回は乱数について教えてください。 LinuxでCを勉強しているんですが、 randで乱数を発生させることはできたんですが、 そのプログラムを何度実行させても 出てきた乱数は同じ値なんです。 プログラム内で例えば10こ乱数を発生させたとすると 違うものが出ます。 しかし、もう一度そのプログラムをはしらせると 前回と全く同じ並びで同じ数が出るのはどうしてでしょうか? 言ってる意味わかっていただけましたでしょうか? 宜しくお願いします。

  • 乱数の評価方法について質問です.

    乱数の評価方法について質問です. C言語にて一様乱数,正規乱数を100個作ってそのデータがどの程度一様分布,正規分布に従うか評価したいのですがどのような方法がありますか? ヒストグラムは作ってみました. よろしくお願いします.

  • 正規乱数に歪度を考慮したい

    あるソフトウェア上で正規分布に従う乱数を発生させる事は できています。そこから歪度を入れた分布で乱数を発生させたいと 考えています。そのソフトウェアではどうやら歪度を入れて 直接、乱数を発生させることはできなさそうなので 正規分布に従う乱数が一つずつ出てきたものを 何らかの数式で変換して 歪度を考慮したいと考えています。 この変換の方法はあるのでしょうか? どのような数式でできるのでしょうか?

  • 規則に従った乱数

    一様乱数を発生させるプログラムはネット上でも入手できます。ある種の確率密度分布に従った乱数を発生させるにはどうしたらいいでしょうか。 例えば0から1の乱数ですが、平均が0.5で分散が0.2のガウス分布に従った乱数を発生させるとしたら0.5に近いところの値が多く出て、0.9のあたりはあまり出ないということになります。そういう乱数です。 そういうものを乱数というのかどうかわかりませんが。 しかし、物理現象は何らかの分布に従う乱数のようなものと考えることができるのではないでしょうか。 よろしくお願いします。

  • エクセルの乱数関数で乱数を作成する。

    エクセルの乱数関数で乱数を作成する。 たとえば1~100までの乱数を作成する時、 1,2,3,・・・・,99,100の整数を複数発生させずに1個ずつ発生させることができますか? VBAとかプログラムを作らないとダメでしょうか?

  • 乱数の発生確率(c++)

    0,1の2値の乱数を発生させるとき、1の発生確率を例えば20%にするにはどのようにすればよいのでしょうか。 発生乱数を除算して余りを求めて・・・・の方法など試したのですが、うまいこといきませんでした。(プログラムが動かないのではなく結果が) 私の確率の認識が間違っているのかもしれませんが、この場合、1000個発生させた場合、300近く1が出れば良いということですよね。

  • 乱数とファイルの入出力の質問です。

    課題で「100個の乱数を発生させファイルに保存し、そのファイルを読み込み、昇順に並べ替えするプログラムを作れ」という課題がありました。 乱数を発生させるのと、昇順に並び替える方法はわかるのですが、二つをうまく組み合わせる方法がわかりません。 ポインタを使ってファイルの入出力をするプログラムを教えてくださる方がいたら連絡ください。 出来れば模範のプログラムを掲示していただけるとうれしいです。

  • 中心極限定理とボックスミュラーによる正規乱数の性質の相違

    中心極限定理とボックスミュラー法を用いて正規乱数を発生させるのですが、内容は『標準正規分布(0,1)に従う正規乱数を100000個発生させる』というものです。 タイトルの通り、2つの方法で得られた正規乱数の性質には相違はあるのでしょうか。

  • 多次元正規乱数が正しく生成されているか確認するには?

    多次元正規乱数に従うサンプルを生成したく,以下の資料を参考にし,プログラムを作成しました。生成したサンプルが本当に要求した多次元正規乱数にしたがっているか確認したいのですが,以下の手順で正しいといえるでしょうか? 例: 平均μ=[1; 2] 分散協分散行列 Σ=[1,0;    0,1]; に従う多次元正規乱数y=[y1,y2]を全部でn=100サンプル生成した. このとき,n=100個のy1の平均が1,n=100個のy2の平均が2となり, n=100個のy1の分散が1,n=100個のy2の分散が1,y1とy2の共分散が0となれば正しく生成できているといってよいでしょうか? この方法で確認したのですが,生成したサンプルが元の平均,共分散から0.1~0.2のずれがあり正しいのか不安です。 参考にした資料: 「多次元正規乱数の作成法」 http://ci.nii.ac.jp/naid/110001186428/ja 「共分散の計算の仕方」 http://www.ge.fukui-nct.ac.jp/~nagamizu/f-3-s.pdf