|
■No81559 (よっしー さん) に返信
> 直前の数値と違う乱数の出し方をご存知の方がいらっしゃいましたら教えていただけないでしょうか?
そういう風に自分で作れば良いというのが、プログラムの世界です。
考え方としては、「前回の数値を覚えておく(変数を作る)」と「前回と同じだったら数値を変える」です。
前回の数値を覚えておく方法としては「メンバー変数を作ること」です。
Private previousValue As Integer = -1
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
'略
Dim currentValue As Integer = Rand.Next(1, 50)
ControlName = "label" & currentValue
previousValue = currentValue
こうすれば、previousValue に今回出した数値が入り、次の Timer1_Tick の時に見ることができるようになります。
次に数値を変える方法ですが、いくつかアプローチがあります。
1.前回と同じ数値が出たらまた Rand.Next を呼び出す(While ループなど)
2.前回の数値があれば、1 〜 49 を求めるようにしておき、同じ数値になったら 1 を足す
1の方法は While という条件が同じ場合に繰り返すというループとなると思います。
currentValue = Rand.Next(1, 50)
While (currentValue = previousValue)
currentValue = Rand.Next(1, 50)
End While
2の方法はこんな感じですかね。
Dim randomMax = 50
If (0 <= previousValue) Then
randomMax = 49
End If
currentValue = Rand.Next(1, randomMax)
If (currentValue = previousValue) Then
currentValue = currentValue + 1
End If
|