Vb.net 随机数发生器不工作
我对生成随机数的函数有问题 我有班级骰子:Vb.net 随机数发生器不工作,vb.net,random,Vb.net,Random,我对生成随机数的函数有问题 我有班级骰子: Public Class dice Private isHold As Boolean = False Private rnd As Random Private rolledDots As Integer Public Sub roll() If isHold = False Then rnd = New Random rolledDots = rnd
Public Class dice
Private isHold As Boolean = False
Private rnd As Random
Private rolledDots As Integer
Public Sub roll()
If isHold = False Then
rnd = New Random
rolledDots = rnd.Next(1, 7)
End If
End Sub
End Class
我在rollcup课程中掷骰子:
Public Class rollCup
Public dices As New List(Of dice)
Sub New()
For i = 0 To 5
dices.Add(New dice)
Next
End Sub
Public Sub rollDices()
For Each dice In dices
dice.roll()
Next
End Sub
End Class
问题是骰子不会产生随机数。每个骰子都产生了相同的数字。
我只能通过循环中的睡眠线程实现随机数:
Public Sub roll()
If isHold = False Then
rnd = New Random
System.Threading.Thread.Sleep(50)
rolledDots = rnd.Next(1, 7)
End If
End Sub
或者在消息框中显示每个数字:
Public Sub roll()
If isHold = False Then
rnd = New Random
rolledDots = rnd.Next(1, 7)
MessageBox.Show(rolledDots)
End If
End Sub
我的问题还有别的答案吗?
ps.抱歉英语不好。我想你的问题是randomgenerator是基于时间的,所以它会根据当前时间创建一个“随机”值。因为不同的骰子在几乎相同的时间运行,你会得到相同的随机数。请参阅:这是您的骰子课程,有一些改动。试试看。问题是,您正在创建一个新的随机数,这导致返回的数字都是相同的
Public Class dice
Private isHold As Boolean = False
Private Shared rnd As New Random '<<<< note Shared
Private rolledDots As Integer
Public Sub roll()
If Not Me.isHold Then
Me.rolledDots = dice.rnd.Next(1, 7)
End If
End Sub
End Class
公共类骰子
Private isHold为布尔值=False
私有共享rnd作为新的随机“MessageBox
是调试此类问题的一种糟糕方法