- 締切済み
乱数の検定方法
ある数値群が乱数になっているか?乱数と言って良いか?を検証する方法の種類と、その求め方を教えて下さい。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- doroteasu
- ベストアンサー率11% (4/34)
乱数とは?を考えて、その逆を検証していく方法を私は行ったことがあります。 ちなみに0から9までの数の数値群を検証を例に説明します。 ある数値群を目の前にして、 等確率性を検討します。(0から9までの各数字の頻度のばらつき) これはχ(カイ)2乗検定を行います。 次に系列相関検定を行います。これは規則性の有無を確かめるものです。 “012345678901234…”となっていた場合、 等確率性はありますが乱数とは言えませんよね こういうのを防ぐために行います。 次に飛び幅(私はこう呼んだ)を調べます。 これは隣り合う2つの数字の距離を検証するもので、 “13579…”の場合、特徴的に2ずつ増加しています。 このように人間の見た目ですぐ判断できればよいのですが 見た目があきらかに乱数だと思っても、よくよく調べると 何らかの規則性が出てくる場合があります。 以上の3つをあげましたが 方法はまだまだ他にもあるでしょう 私はこの3つを総合的に判断して すべてコンピュータに計算させて検証しました。 それぞれの詳しい方法はここでは説明が難しいので 割愛させて頂きます。すみません 乱数の定義というのは、そのときそのときで変わってきます。 どの程度の数値のばらつきで乱数と言って良いかは、 個人で判断するしかないと思います。 私の行った実験は、人に数値列を書いてもらう実験でしたが 同じ数字が2つ並ぶことはほとんどありませんでした。 コンピュータで乱数を作成すると、2つ並ぶことはよくあることです。 確率的にも1割の確率で発生して当然なのですが、 人間が書くと何故かほとんどないのです。面白いですよね? どういう勉強かわかりませんが 頑張ってください。参考にして頂けたらと思います。
お礼
ありがとうございます。 知り合いが、乱数発生器?なるものを、電子回路の勉強で作ったのですが、 私に、本当に乱数になっているか調べてくれと言われて、どうすれば良いのか わからず困っていたところでした。 教えていた方法を、コンピュータに計算させるのにC言語でプログラムしようと思っていますが、系列相関検定と飛び幅検定の詳細がわからないので、出来るかどうかわかりませんが、がんばってみます。がんばってもわからず、教えを乞うかもしれませんが、そのときはまたよろしくお願いいたします。 また、他の方法をお気づきになられましたらお教えください。 ありがとうございました。