Rnd関数を使って乱数を発生させる時に,同じページで2つ使う場合に同じ乱数を発生させないようにする(2つとも違う乱数を発生させる)にはどの様なプログラムを組んだら良いのでしょうか?教えて下さい。
差し当たり、下記ではどう?
Private Sub Form_Load()
Randomize '乱数初期化
End Sub
Private Sub Command1_Click()
Dim ran As Integer
Dim ran2 As Integer
ran = Ransuu(1, 99) '乱数(1-9)発生
Label1.Caption = ran
ran2 = Ransuu(1, 99) '乱数(1-9)発生
Label2.Caption = ran2
End Sub
Private Function Ransuu(lower As Integer, upper As Integer) As Integer
Ransuu = Int((upper - lower + 1) * Rnd + lower)
End Function
乱数2が乱数1と違くなるまで回すとか。
ありがとうございます。しかし、[Int(Rnd * 30)+1]を使っているので出来ればこの式を使った方法があったら教えて下さい。
自分でも色々と試して見たのでしょうか?
下記は適当に書いて見ましたが....。
Option Explicit
Private Sub Form_Load()
Randomize '乱数初期化
End Sub
Private Sub Command1_Click()
Dim a As Integer
Dim b As Integer
Dim i As Integer
a = Int(Rnd * 30) + 1
Label1.Caption = a
b = Int(Rnd * 30) + 1
For i = 0 To 10
If a = b Then
b = Int(Rnd * b) + 1
If a <> b Then
Exit For
End If
End If
Next i
Label2.Caption = b
End Sub
ありがとうございました。自分でもいろいろ試しましたが,なかなかできず助言をお願いしました。あとは,またなんとか自分でやってみます。
ツイート | ![]() |