アプリ版:「スタンプのみでお礼する」機能のリリースについて

VisualBasic2010を使用しています。
コード内に複数回、乱数を生成しています。

普段は始めだけRandomizeして、Rnd関数を使用していて、毎回違う乱数を生成させているのですが、
今回は毎回同じ乱数を生成させたいのですが、どうやったらできるでしょうか?

シード値をどうこうするとは、わかったのですがやり方がわかりません。
わかる方、どうぞよろしくお願いします。

A 回答 (4件)

Rnd関数等で発生する乱数は、正確には「疑似乱数」といって、一見乱数のように見えますが、実際は計算で求めた値です。


その最初の値を「シード(種)」といって、Randomizeで設定します。
種が同じなら、それから計算される値(=Rnd関数で出てくる乱数列)は同じになります。

Randomizeに適当な固定値を設定してください。


別解として
必要な数の乱数を予めファイルに用意しておいて、Rnd関数の代りにファイルから値を読み込む
という方法もあります。
    • good
    • 0

VisualBasic2010はどうだか知らないけど、VBAともし同じなら


Rnd (-65000)
For i = 0 To 0
  Debug.Print (Rnd)
Next
なんてRndの引数に負の値を指定してみたらどうなります?
    • good
    • 0

たとえば、シード値を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がシード値として使用され、毎回違ったものが出力されます。
    • good
    • 0

毎回同じ乱数を生成することはできません。

乱数ではなくなってしまいますので。
    • good
    • 0

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