ある数値群が乱数になっているか?乱数と言って良いか?を検証する方法の種類と、その求め方を教えて下さい。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

乱数とは?を考えて、その逆を検証していく方法を私は行ったことがあります。


ちなみに0から9までの数の数値群を検証を例に説明します。
ある数値群を目の前にして、
等確率性を検討します。(0から9までの各数字の頻度のばらつき)
これはχ(カイ)2乗検定を行います。
次に系列相関検定を行います。これは規則性の有無を確かめるものです。
“012345678901234…”となっていた場合、
等確率性はありますが乱数とは言えませんよね
こういうのを防ぐために行います。
次に飛び幅(私はこう呼んだ)を調べます。
これは隣り合う2つの数字の距離を検証するもので、
“13579…”の場合、特徴的に2ずつ増加しています。
このように人間の見た目ですぐ判断できればよいのですが
見た目があきらかに乱数だと思っても、よくよく調べると
何らかの規則性が出てくる場合があります。
以上の3つをあげましたが
方法はまだまだ他にもあるでしょう
私はこの3つを総合的に判断して
すべてコンピュータに計算させて検証しました。
それぞれの詳しい方法はここでは説明が難しいので
割愛させて頂きます。すみません
乱数の定義というのは、そのときそのときで変わってきます。
どの程度の数値のばらつきで乱数と言って良いかは、
個人で判断するしかないと思います。
私の行った実験は、人に数値列を書いてもらう実験でしたが
同じ数字が2つ並ぶことはほとんどありませんでした。
コンピュータで乱数を作成すると、2つ並ぶことはよくあることです。
確率的にも1割の確率で発生して当然なのですが、
人間が書くと何故かほとんどないのです。面白いですよね?
どういう勉強かわかりませんが
頑張ってください。参考にして頂けたらと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
知り合いが、乱数発生器?なるものを、電子回路の勉強で作ったのですが、
私に、本当に乱数になっているか調べてくれと言われて、どうすれば良いのか
わからず困っていたところでした。
教えていた方法を、コンピュータに計算させるのにC言語でプログラムしようと思っていますが、系列相関検定と飛び幅検定の詳細がわからないので、出来るかどうかわかりませんが、がんばってみます。がんばってもわからず、教えを乞うかもしれませんが、そのときはまたよろしくお願いいたします。
また、他の方法をお気づきになられましたらお教えください。
ありがとうございました。

お礼日時:2001/02/06 16:30

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q正規乱数とは

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

Aベストアンサー

正規乱数とは、正規分布に従う母集団からランダムに取り出された
数値の集合のことです。
Uを(0,1)上の一様分布に従う確率変数、Fを正規分布の分布関数とし
て、X=F^(-1)(U)(UのFの逆関数による確率変数)とすると、
P(X≦x)=P(F^(-1)(U)≦x)=P(U≦F(x))=F(x)
となって、Xの分布関数はFになり、Xは正規分布に従う確率変数と
なります。
これが、2の逆関数法です。
NORMSINVがFに相当し、RAND()がUに相当します。
1は私も意味が分かりません。

Q等比数列をなす3つの数があって、その和は19で、積は216である。この3つの数を求めよという問題の

等比数列をなす3つの数があって、その和は19で、積は216である。この3つの数を求めよ
という問題の解答を教えてください!
できれば途中式もお願いします。
自分でやったら−5,6,11なってしまいました…

Aベストアンサー

3つの数を、a、ar、ar^2とする。
a^3r^3=216
ar=6
a+6+6r=19
a+6r=13
a=13-6r
(13-6r)r=6
6r^2-13r+6=0
r=2/3, 3/2
r=2/3のときa=9
r=3/2のときa=4
9, 6, 4
4, 6, 9
答え 3つの数は、4, 6, 9
解答大雑把だから、自分でちゃんと言葉も添えてな!

Q乱数について

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

Aベストアンサー

乱数は計算によって、擬似的に求めています。
そのため同じ乱数が順番に出てきます。
乱数を初期化することで、順番の途中から使うことができます。
srand()がその関数です。
一般的にはプログラムが起動された時間を利用し、
乱数を初期化することが行なわれます。
コンパイラによって違うかもしれませんが、
たいてい、こんな感じで初期化します。

srand(time());

他にも方法はあります。
たとえば、人が入力するまでの時間は規則性がないので、
このとき、乱数の空回しをしてやることで、
乱数の周期性をなくすことができます。
while(1)
{
 rand(); ←乱数の空回し
 入力待ち;
 if(入力あり) break;
}

Q物理乱数と真性乱数の違いは何でしょうか。

標記の問いに詳しくお答え下さい。

Aベストアンサー

 「真性乱数」ってのは,本来は「乱数」のことでしょう.乱数は数学の概念です.ある既知の分布に従っていて,毎回生成される度にその値は過去の値とは独立である.

 一方、「物理乱数」は物理現象を観測して生成する数列であって,従って物理の概念です.そして,これが乱数なのかどうかは,以下に論じる通り,証明不可能です.
 たとえばサイコロを振るとか,コインを投げるとか,トランプをよく切り混ぜてから配る,というのだって昔からある「物理乱数」の一種と言えましょうが,実はstomachman,コインを投げて10回連続でオモテを出す技を習得したことがあります(今はもう出来ませんけど).トリックはなく,単にいつも同じタイミングでコインを投げ,キャッチする,というだけのことで,ロボット技術を使えば作れるでしょう.こんなのは乱数になっていないことが明らかです.
 立方体の箱を水で満たし,そこに比重1の球を入れて振り回す.そして,球の動きが止まるのを待ってから,球の座標を正確に測る,という方法で物理乱数を生成する方法が(かつて)あった,と聞いた事があります.この方法はどうでしょうか.コインよりはましとは言いながら,疑う余地はまだいろいろありますから,得られた数列が乱数になっているかどうかを調べてみるしかなさそうです.
 しかし,ある与えられた数列が乱数かどうかを調べようというのは無理なんです.なぜなら,「ある既知の分布に従っていて,生成される度にその値は毎回過去の値とは独立である」ことを証明しようとしたら,有限長の数列じゃ最初から話になりません.無限に長い数列を無限個集めて,それらの統計的性質を調べなくてはならない.実行不可能です.
 有限長の数列で出来る事は,種々さまざまな統計的性質を調べて「乱数になっていない」という証拠を探すことです.証拠が出たら即座にアウトですが,いくら調べてもその証拠が出ないからと言って,乱数になっていると宣言する訳には行きません.だって,調べたのは過去のデータだけで,しかも高々有限通りの統計的性質を見たなんですから.

 かくて,現代において「物理乱数」と言えば,熱雑音だの宇宙線だの放射性原子核の崩壊だの,もっぱら「量子力学が正しいと仮定すると,乱数になっている」と言えるものを利用して数列を生成することを指している.結果が乱数になっているかどうかではなくて,(仮定が正しければ)原理的に乱数になる筈,という論法です.
 ところが,数学は物理とは本来無縁であり,従って前提となる「量子力学が正しい」を(数学で言う「証明」の意味において)証明するのは不可能です.でも,非常に多くの観察・実験をしてもいまだに「量子力学は誤っている」という証拠が出ないので,「量子力学が正しいっぽい」とは言えるし,「正しいっぽさ」がものすごく高い.将来「実は正しくありませんでした.てへ」になるおそれなどほとんどない.
 だから,ま,これを乱数だと思って利用している.そういうものが「物理乱数」ですね.

 「真性乱数」ってのは,本来は「乱数」のことでしょう.乱数は数学の概念です.ある既知の分布に従っていて,毎回生成される度にその値は過去の値とは独立である.

 一方、「物理乱数」は物理現象を観測して生成する数列であって,従って物理の概念です.そして,これが乱数なのかどうかは,以下に論じる通り,証明不可能です.
 たとえばサイコロを振るとか,コインを投げるとか,トランプをよく切り混ぜてから配る,というのだって昔からある「物理乱数」の一種と言えましょうが,実はstomachman,コインを...続きを読む

Q乱数の数学的な定義はありますか?

数学の背景がないので、質問が変かも知れませんが、よろしくお願いします。

「乱数」には、数学的な定義がありますか?
例えば、「いかなる視点からも規則性のない数の並び」とか、「偶然にまかせた数の並び」とか言えるのでしょうか?

また、ある数列を与えられたときに、それが、「乱数」かどうかを調べる方法はあるのでしょうか?

というのは、たまたま、1が100個ならんだ数列でも、必ずしも「乱数」ではないと言えないような気がするのです。もし、偶然に任せるという意味で乱数を考えるとすると、たまたま、1が100個並ぶことも有り得るし、それを意識的に排除すると、むしろ、自然な「乱数」ではなくなってしまうような気がして、よくわからなくなってしまいました。

Aベストアンサー

まず,数字の出現頻度もある1つの確率分布にしたがっていることが第一の条件です。
つまり,1から100の間の整数の100万個の一様乱数と言った場合には,1の出現頻度がほぼ1万個,2も同じく1万個・・・100も同じく一万個であることです。
次に,どの数字も他の数字と関係がないことが必要です。これははっきり言うのが難しいのですが,たとえば直前の数字とその数字の間の相関が無い(つまり1あとはいつも2だったりしないこと)。先の例だと
1の後の数字を調べても1から100までの数字が同じ頻度で並んでいるような数字のことです。
ご指摘のように,1が100個ならんだ数が乱数であるか無いかは母数いくつの集団について考えているかによります。100個の集団について考えてみると明らかに上記の2条件を満たしませんから,乱数とはいえません。
しかし,10の百乗くらいの数の母集団であれば,ある一箇所に1が100個続いても乱数といえるかもしれません。
乱数検定というのがあって,上記の2つの条件を調べるのもひとつです。
ほかにもいろいろな検定方法があり,乱数は暗号技術と密接な関係があるために,現在でもいろいろ研究されています。興味があれば,「乱数検定」で検索するとたくさん出てきます。

まず,数字の出現頻度もある1つの確率分布にしたがっていることが第一の条件です。
つまり,1から100の間の整数の100万個の一様乱数と言った場合には,1の出現頻度がほぼ1万個,2も同じく1万個・・・100も同じく一万個であることです。
次に,どの数字も他の数字と関係がないことが必要です。これははっきり言うのが難しいのですが,たとえば直前の数字とその数字の間の相関が無い(つまり1あとはいつも2だったりしないこと)。先の例だと
1の後の数字を調べても1から100までの数字が同じ頻度で並...続きを読む

QPが群Gのシローp-部分群であるとき Pが唯一のシローp-部分群である

Pが群Gのシローp-部分群であるとき Pが唯一のシローp-部分群であることと

PがGの正規部分群であることが同値であることを

シローの定理を使って示すにはどうすればいいのでしょうか?


<シローの定理>
(1)p^r | |G| ==> Gは位数p^rの部分群をもつ
よってシローp-部分群は存在する

(2)H: Gのp-部分群とすれば
Hを含むシローp-部分群が存在する

(3)シローp-部分群は互いにG-共役

(4)シローp-部分群の個数は
1+k*p の形 (k∈Z,k≧0)

Aベストアンサー

p-シロー群が正規部分群とは次の二つのことが成り立つ。

(1) Pは正規部分群 ⇔ xP = Px,∀x.
(2) P,Qがp-シロー群 ⇒ aP = Qa,∃a.

Q
= aPa^{-1} (2)より
= P (1)より

よってP=Q、つまり、ただ一つしかない。

p-シロー群がP一つしかないとき
⇒すべてのxに対してp-シロー群xPx^{-1}とPは共役。
⇒axPx^{-1} = Pa,∀x
⇒yPy^{-1} = P,∀y
(y = axと変形)
⇒Pは正規部分群

どうかな、てきとーなんで、ゆるしてね

QC++の乱数に関して

C++の乱数に関する質問です。


最初に1~100の乱数を1ことり、
二番目に、最初に得られた値以外の1~100の乱数を1ことり、
三番目に、最初と二番目に得られた値以外の1~100の乱数を1ことり、
・・・・・・・
100番目に最後に残った乱数で選ばれていない値は1個となるので
1番目から99番目で得られた乱数を見れば、
100番目の乱数が予想できる。

この様な乱数はどの様にすれば得られるでしょうか。

Aベストアンサー

やり方はいくつかありますが

一番シンプルなのは
最初に1~100の乱数を1ことり、配列に格納
二番目に、1~100の乱数を1ことり、
 それが既に配列にあればもう一度取得しなおす
 配列になければ配列に格納
三番目に、1~100の乱数を1ことり
 それが既に配列にあればもう一度取得しなおす
 配列になければ配列に格納

他には

最初に1~100の数値を入れた配列を準備
取得するごとに消していく

他には

最初に1~100の乱数を1ことる
二番目に、1~99の乱数を1ことるが、最初にとったものより大きい場合は+1
三番目に、1~98の乱数を1ことるが、すでに取っているものと比べて1つより大きければ+1、2つより大きければ+2

Q(矛盾?)群Z_8000000で位数が8であるような元を全て求めよ

[問] 群Z_8000000で位数が8であるような元を全て求めよ。
という問題に下記例題を参考に取り組んでいます。

[例題] 群Z_40で位数が10であるような元を全て求めよ。
[解]10x≡0(mod40)で10より小さいものでは0にならないのだから
4aという形aが40と互いに素.
aは40と互いに素で10(4a)≡0(mod40)を満たし,且つ9(4a)≡0(mod40),…,(4a)≡0(mod40)を満たさない。という事は
a=1の時,10・4≡0(mod40)つまり,40≡0(mod 40)を満たし,且つ
36≡0(mod40),…,4≡0(mod40)を満たさない。
はOK.よって類はC(4).
a=2の時,10・8≡0(mod40)つまり,80≡0(mod 40)を満たし,且つ
72≡0(mod40),…,8≡0(mod40)を満たさない。
は"40≡0(mod 40)を満たさない"が途中に現れてしまいのでNG.(実際,gcd(2,40)=2≠1)
a=3の時,10・12≡0(mod40)つまり,120≡0(mod 40)を満たし,且つ
108≡0(mod40),…,12≡0(mod40)を満たさない。はOK.よって類はC(12).
a=4の時,10・16≡0(mod40)つまり,160≡0(mod 40)を満たし,且つ
144≡0(mod40),…,16≡0(mod40)を満たさない。
は"80≡0(mod 40)を満たさない"が途中に現れてしまいのでNG.(実際,gcd(4,40)=4≠1)
a=5の時,10・20≡0(mod40)つまり,200≡0(mod 40)を満たし,且つ
180≡0(mod40),…,20≡0(mod40)を満たさない。
は"40≡0(mod 40)を満たさない"が途中に現れてしまいのでNG.(実際,gcd(5,40)=5≠1)
a=6の時,10・24≡0(mod40)つまり,240≡0(mod 40)を満たし,且つ
216≡0(mod40),…,24≡0(mod40)を満たさない。
は"120≡0(mod 40)を満たさない"が途中に現れてしまいのでNG.(実際,gcd(6,40)=2≠1)
a=7の時,10・28≡0(mod40)つまり,280≡0(mod 40)を満たし,且つ252≡0(mod40),…,28≡0(mod40)を満たさない。はOK.よって類はC(28).
a=8の時,10・32≡0(mod40)つまり,320≡0(mod 40)を満たし,且つ288≡0(mod40),…,32≡0(mod40)を満たさない。
は"160≡0(mod 40)を満たさない"が途中に現れてしまいのでNG.(実際,gcd(8,40)=4≠1)
a=9の時,10・36≡0(mod40)つまり,360≡0(mod 40)を満たし,且つ324≡0(mod40),…,36≡0(mod40)を満たさない。はOK.よって類はC(36).
a=10の時,10・40≡0(mod40)つまり,400≡0(mod 40)を満たし,且つ360≡0(mod40),…,40≡0(mod40)を満たさない。
は"40≡0(mod 40)を満たさない"が途中に現れてしまいのでNG.(実際,gcd(10,40)=10≠1)
a=11の時,10・44≡0(mod40)つまり,440≡0(mod 40)を満たし,且つ396≡0(mod40),…,44≡0(mod40)を満たさない。
はOK.よって類はC(44).しかし,C(44)=C(4).
即ち,ここでは既に一周しているのでこれ以上は調べる必要は
ない。

以下現れる類は上記のC(4),C(12),C(28),C(36)に等しい。


となっています。所でこの「4a」とは何処から来たのでしょう
か?


[問] 群Z_8000000で位数が8であるような元を全て求めよ。
そして,求めた元が本当に正しいか説明してみせよ。
[解]
8x≡0 (mod 8000000) and 7x≠0 (mod 8000000), 6x≠0(mod8000000),…, x≠0
(mod 8000000)を満たせばいいのでgcd(a,8000000)=1で
0≦1000000a<8000000なるaを吟味してみればよい。.何故なら
d=gcd(a,8000000)≠1
なら m(1000000a)=8000000なるm=1,2,…,7がどうしても現れてしまうからである。.
従ってa=1,3,7.即ち C(1),C(3),C(7).
実際,a=1なら,8・1000000≡0(mod8000000) つまり8000000≡0(mod8000000)
が成立ち.
7000000≡0(mod8000000),…,1000000≡0(mod8000000)らが成立たない。
従って,a=1はOK. ∴その類はC(1000000).
a=2なら,8・2000000≡0(mod8000000)即ち16000000≡0(mod8000000)が成立ち.
14000000≡0(mod8000000),…,2000000≡0(mod8000000)が成立たない.
然し"8000000≡0(mod8000000)は成立たない"が14000000≡0(mod8000000),…,2000000≡0(mod8000000)の中に現れる。.従って,a=2は
NG,しかもgcd(2,8000000)=2≠1.

a=5なら,8・5000000≡0(mod8000000) つまり40000000≡0(mod8000000)
が成立ち.
35000000≡0(mod8000000),…,5000000≡0(mod8000000)らが成立たない。
従って,a=5はOK.
∴その類はC(5000000). しかし,gcd(5,8000000)=5≠1

という風に,a=5の場合は5は8000000に互いに素ではないにもかかわらず,C(5000000)は位数8になり,題意を満たしてしまいます。
この矛盾はどうしてなのでしょうか?

[問] 群Z_8000000で位数が8であるような元を全て求めよ。
という問題に下記例題を参考に取り組んでいます。

[例題] 群Z_40で位数が10であるような元を全て求めよ。
[解]10x≡0(mod40)で10より小さいものでは0にならないのだから
4aという形aが40と互いに素.
aは40と互いに素で10(4a)≡0(mod40)を満たし,且つ9(4a)≡0(mod40),…,(4a)≡0(mod40)を満たさない。という事は
a=1の時,10・4≡0(mod40)つまり,40≡0(mod 40)を満たし,且つ
36≡0(mod40),…,4≡0(mod40)を満たさない。
はOK.よって類はC(4).
a=2の時,10・...続きを読む

Aベストアンサー

例題ではgcd(m,a)=1が成り立つ必要があります
問いではgcd(m,a)=1は成り立つ必要がありません
違う場合ですので、まず区別して下さい

群Z_8000000で位数が8であるような元を求めたい
まず位数が8より大きくならないようにその元は1000000の倍数である必要がありますから1000000a(0≦a<8)と書けます・・・(1)
次に位数が8より小さくならないようにaは8と互いに素である必要があります・・・(2)
結局、a=1,3,5,7です

例題では
>aが40と互いに素
とありますが、これでも正しいのですが、aと10が互いに素というべきでしょう

Qポケモン 乱数調整

ポケモンの乱数調整をやり始めようかな、なんて思ってます。 僕はLightユーザーで友人が言うには乱数調整はやりやすいそうです。しかしやり方が載ったサイトを見るととてもややこしそうで「こんなん俺にできるんか??」と少し不安になっています。

僕はそこまでパソコンに詳しくなく、どちらかというと不器用です。

こんな僕でも出来るでしょうか?
具体的には孵化乱数と、野生乱数、出来れば色乱数もやってみたいです!

Aベストアンサー

・パソコンに詳しくないことと乱数調整はほとんど関係ありません。お持ちのパソコンがツールに対応していない、などではない限り。

・ご友人はBWを前提に仰ってると思います。BWなら確かに比較的やさしいと思います。
ただ、ややこしそうだとお思いなのもわかります。でもBWならサイトを見ながら一つ一つ確実にやっていけばできると思います。
BW2も同じようなものですが、こちらはタイマーずれがひどいので最初はBWのほうがいいかと。

・いきなり孵化乱数や野生乱数ではなく、まずは固定シンボル乱数や配達員乱数からのほうがとっつきやすいでしょう。
全く初めてなら固定シンボルの乱数調整ができるようになってからがいいと思います。

・ハードは何でしょう。乱数調整する場合できれば初代DSかDSLiteがいいのです。ライト(Light)ユーザーとお書きですが、ハードの意味ではなく、ポケモン廃人ではないよの意味に受け取ったのですが。

・色乱数は裏IDが判明しなければできません。



ご友人が乱数調整なさっておられるのでしたらある程度は教われるのではないでしょうか?

Q有限アーベル群Gの位数が相異なる2素数p、qの積であるとき、Gは巡回群

有限アーベル群Gの位数が相異なる2素数p、qの積であるとき、Gは巡回群であることを示せ。


という問題があるのですがよくわかりません。できれば詳しく教えていただけると嬉しいです!

Aベストアンサー

大抵の教科書に書いてありませんか?
構造定理を使わずに、手作りっぽく
書いてみると…

G の元で、単位元でないモノの一つを a とし、
a が生成する G の部分群を A とする。
A の位数は、ラグランジェの定理より、
G の位数の約数 1,p,q,pq のどれかになる。
(0) 位数が 1 の場合。
a が単位元でないから、これはありえない。
(1) 位数が p の場合。
可換群の部分群は全て正規部分群だから、
G は A と商群 G/A の直積に分解する。
A,G/A は位数 p,q の部分群であり、
素数位数だから巡回群である。
巡回群同士の直積群は、巡回群となる。
(2) 位数が q の場合。
同上。
(3) 位数が pq の場合。
単項生成の部分群は巡回群だから、
G = A は位数 pq の巡回群になる。


人気Q&Aランキング

おすすめ情報