- ベストアンサー
乱数生成について
VisualBasic2010を使用しています。 コード内に複数回、乱数を生成しています。 普段は始めだけRandomizeして、Rnd関数を使用していて、毎回違う乱数を生成させているのですが、 今回は毎回同じ乱数を生成させたいのですが、どうやったらできるでしょうか? シード値をどうこうするとは、わかったのですがやり方がわかりません。 わかる方、どうぞよろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Rnd関数等で発生する乱数は、正確には「疑似乱数」といって、一見乱数のように見えますが、実際は計算で求めた値です。 その最初の値を「シード(種)」といって、Randomizeで設定します。 種が同じなら、それから計算される値(=Rnd関数で出てくる乱数列)は同じになります。 Randomizeに適当な固定値を設定してください。 別解として 必要な数の乱数を予めファイルに用意しておいて、Rnd関数の代りにファイルから値を読み込む という方法もあります。
その他の回答 (3)
- menodori
- ベストアンサー率0% (0/1)
VisualBasic2010はどうだか知らないけど、VBAともし同じなら Rnd (-65000) For i = 0 To 0 Debug.Print (Rnd) Next なんてRndの引数に負の値を指定してみたらどうなります?
- ShowMeHow
- ベストアンサー率28% (1424/5027)
たとえば、シード値を1000とすると、 dim r as new system.random(1000) for x = 0 to 9 debug.print(r.next(10)) next とすると、毎回 1 2 7 0 6 4 9 1 6 0 と出力されます。 カッコ内をブランクにすると、environment.tickcountがシード値として使用され、毎回違ったものが出力されます。
- aokii
- ベストアンサー率23% (5210/22062)
毎回同じ乱数を生成することはできません。乱数ではなくなってしまいますので。