• ベストアンサー

乱数生成について

VisualBasic2010を使用しています。 コード内に複数回、乱数を生成しています。 普段は始めだけRandomizeして、Rnd関数を使用していて、毎回違う乱数を生成させているのですが、 今回は毎回同じ乱数を生成させたいのですが、どうやったらできるでしょうか? シード値をどうこうするとは、わかったのですがやり方がわかりません。 わかる方、どうぞよろしくお願いします。

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

Rnd関数等で発生する乱数は、正確には「疑似乱数」といって、一見乱数のように見えますが、実際は計算で求めた値です。 その最初の値を「シード(種)」といって、Randomizeで設定します。 種が同じなら、それから計算される値(=Rnd関数で出てくる乱数列)は同じになります。 Randomizeに適当な固定値を設定してください。 別解として 必要な数の乱数を予めファイルに用意しておいて、Rnd関数の代りにファイルから値を読み込む という方法もあります。

その他の回答 (3)

  • menodori
  • ベストアンサー率0% (0/1)
回答No.4

VisualBasic2010はどうだか知らないけど、VBAともし同じなら Rnd (-65000) For i = 0 To 0   Debug.Print (Rnd) Next なんてRndの引数に負の値を指定してみたらどうなります?

  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.2

たとえば、シード値を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)
回答No.1

毎回同じ乱数を生成することはできません。乱数ではなくなってしまいますので。

関連するQ&A