擬似乱数系列とは何かを教えてください

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

A 回答 (2件)

●疑似乱数の使い道:いろいろありますが、代表的なものを。


 テストデータの生成。疑似乱数でいい加減なデータを取りあえず作ってみる。
 ランダムな現象のシミュレーション。たとえばデータにわざとノイズを乗せてみて、データ処理プログラムの性能をテストしたりします。このノイズを作るのに疑似乱数を利用する。また、確率的な現象の真似をして、その統計的な性質を調べてみるのにも使います。
 最適化。n次元のパラメータp=(p1,p2,....,pn)で決まる関数E(p)を最小にするようなpを求める、という極値問題において、疑似乱数を使ってpの候補を選び、そのpの近傍で解をさがす、というやり方があります。
 高次元の数値積分。数値積分の計算を、乱数を使ってやる方法があります。モンテカルロ法という。これを疑似乱数でやる。

●疑似乱数は何が良いの?
 生成するのが簡単である。本物の乱数列を得るには特別なハードが必要です。
 同じ乱数列を何度でも再現できる。計算結果を確かめる(バグや誤差の影響を調べる)のに、これは必要です。
    • good
    • 0
この回答へのお礼

ありがとうございました。とっても役に立ちました!!これからも、聞くと思うのでよろしくお願いします。

お礼日時:2001/01/25 10:40

とりあえず、下記URLの中に簡単な説明があります。



具体的疑問点、ご質問の目的等、補足してください。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=31041

この回答への補足

擬似乱数系列というのは、どのような時に使うものなのか。また、使うことによって何がどう変化するかなどを具体的に知りたいです。結構根本的なとことから分かってないので詳しくお願いします。

補足日時:2001/01/24 16:29
    • good
    • 0

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

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

Qある乱数生成法により,生成した最初の乱数の値は固定するか確かめて頂きた

ある乱数生成法により,生成した最初の乱数の値は固定するか確かめて頂きたいです.

0.0から1.0までの一様乱数を発生させる方法です.
C言語のコードは以下に載せます.

#define IA 16807
#define IM 2147483647
#define AM (1.0/IM)
#define IQ 127773
#define IR 2836
#define MASK 123459876

float ran0(long *idum)
{
long k;
  float ans;

*idum ^= MASK;
k=(*idum)/IQ;
*idum=IA*(*idum-k*IQ)-IR*k;
if (*idum < 0) *idum += IM;
ans=AM*(*idum);
*idum ^= MASK;
return ans;
}

この乱数生成法をBVAで,計算の中で繰り返し用いようとしています.

idumを任意の整数値に設定・再設定すれば乱数列が初期化されると書いてあったため,idumの値を変えてみましたが,生成された乱数の最初の値は固定されたままでした.

そこで,もともとこの乱数生成法がそのようになっているのかを教えて頂きたいです.

よろしくお願いします.

ある乱数生成法により,生成した最初の乱数の値は固定するか確かめて頂きたいです.

0.0から1.0までの一様乱数を発生させる方法です.
C言語のコードは以下に載せます.

#define IA 16807
#define IM 2147483647
#define AM (1.0/IM)
#define IQ 127773
#define IR 2836
#define MASK 123459876

float ran0(long *idum)
{
long k;
  float ans;

*idum ^= MASK;
k=(*idum)/IQ;
*idum=IA*(*idum-k*IQ)-IR*k;
if (*idum < 0) *idum += IM;
ans=AM*(*idum);
*idum ^= MASK;
return ans;
}

この乱数生成法をBVA...続きを読む

Aベストアンサー

Cの関数ran0の中の最初の
*idum ^= MASK;
で、関数の外で設定されたidumの値を使って
MASKとの間でビット毎に排他的論理和を取って
います。当然、外で与えるidumの値が変われば
乱数の最初の値は変わります。
実際、メイン関数を作って、この関数をコンパイル
して、実行してみましたが、そのように動いて
います。
idumの値を変えても、乱数の初期値が変わらない
とすれば、関数ran0の呼び方を間違えていると
思います。
ran0の引数はポインタであることを意識していますか?

なお、Cの標準関数の中にも乱数発生関数randがあります。
これは、関数srandで初期化すれば、初期値を固定
できます。逆にいえば、普通は、randの初期値は
固定されません。
VBAにも乱数発生関数が組み込まれていると思いますが、
これらを使わない理由が何かあるのでしょうか。

乱数の統計的性質が余りよくないのは確かですが、
あなたのran0も同程度でしょう。
もっと性質のよい乱数発生アルゴリズムがあるはず
ですので、ご調査ください。

Qアドレスを送ると勉強方法を教えてくれる...っていうのは何かの罠ですか? アドレスを入力して頂くと

アドレスを送ると勉強方法を教えてくれる...っていうのは何かの罠ですか?

アドレスを入力して頂くと先着〇名様に偏差値40から65まで上げて〇〇大学に合格した勉強方法を教えます!など、自分の経験談を本当のように書いてあって偏差値の上がった模試の写真などがあったりするサイトがあるのですが、そういうのにアドレスを送ったら本当に教えて貰えるんですか?送って教えて貰っても忘れた頃にアドレスを何かに悪用されたりすることがあるのかなと思い質問させてもらいました。
やはりそういうサイトにアドレスを送ったら危険ですよね?

Aベストアンサー

警察署を訪れて、サイバー犯罪担当者に伝えて、
相談してみませんか。その警察官が
大丈夫であると言ってくださったら、アクセスして
みるのもいいかもしれませんが…質問者さまは
偏差値を上げたいのでしょうか。
であれば、公立図書館等で、
『偏差値29の私が東大に合格した超独学勉強法』
『妄想娘、東大をめざす  偏差値48からの東大合格奮闘記』
『学年ビリのギャルが1年で偏差値を40上げて慶應大学に現役合格した話』
などを読んで、教科ごとにベストな学習方法を編み出しませんか。

『偏差値29の私が東大に合格した超独学勉強法』の著者の
【Out of Sight, out of Mind】の解釈の仕方が
素晴らしいので、チラッとでも見てみませんか。

Ciao.

Q乱数をC言語で

乱数をC言語でプログラムしたいのですが、
rand関数を使わずに作らなきゃいけないという事なんですが
一度作ってはみたもののうまく乱数にできずに困っています
できれば教えていただきたいです

Aベストアンサー

>一度作ってはみたもののうまく乱数にできずに困っています

じゃあ、それを補足にどうぞ。
ついでにどういう結果なら「乱数」だとするのかも補足に。

Qポリスの崩壊にともなって生まれた、ポリスを超えた世界の市民という意味の言葉は何か 教えてください(>

ポリスの崩壊にともなって生まれた、ポリスを超えた世界の市民という意味の言葉は何か
教えてください(>_<)

Aベストアンサー

コスモポリタン

Q人為を排して天地自然のままに生きることを説き、孔子・孟子の思想とならぶ中国の代表的思想は何か 教えて

人為を排して天地自然のままに生きることを説き、孔子・孟子の思想とならぶ中国の代表的思想は何か
教えてください(>_<)

Aベストアンサー

老子の「無為自然」が問いにある代表的な思想だと思います。
後の道教に発展していく思想ですが、
老子自体がよくわからないようですね。
今になっても評価が定まっておらず、研究すると面白いのかもしれません。


人気Q&Aランキング

おすすめ情報