Rnd関数で・・・

解決


さゆ  2003-12-21 19:19:26  No: 81061

Rnd関数を使って乱数を発生させる時に,同じページで2つ使う場合に同じ乱数を発生させないようにする(2つとも違う乱数を発生させる)にはどの様なプログラムを組んだら良いのでしょうか?教えて下さい。


モミジ  2003-12-21 20:20:22  No: 81062

差し当たり、下記ではどう?

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


oku  URL  2003-12-22 09:20:48  No: 81063

乱数2が乱数1と違くなるまで回すとか。


さゆ  2003-12-22 17:53:24  No: 81064

ありがとうございます。しかし、[Int(Rnd * 30)+1]を使っているので出来ればこの式を使った方法があったら教えて下さい。


モミジ  2003-12-22 18:35:42  No: 81065

自分でも色々と試して見たのでしょうか?
下記は適当に書いて見ましたが....。

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


さゆ  2003-12-22 18:42:54  No: 81066

ありがとうございました。自分でもいろいろ試しましたが,なかなかできず助言をお願いしました。あとは,またなんとか自分でやってみます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加