我正在尝试将此数组循环100次(从0-99,999获取一个数字)。我尝试过几种不同的运气方式。我已经设置好了你点击一个按钮就可以生成数组了。然后,用户将输入一个数字并点击另一个按钮,以检查该数字在100个数字组中出现的次数。有任何想法如何解决它?我被卡住了。
Dim i As Integer
Dim rnd As New Random()
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnter.Click
Dim num As Integer
If Int32.TryParse(txtEnter.Text, num) AndAlso num >= 0 AndAlso num < 10 Then
lblNumber.Text = i.ToString()
Dim counts = From c In i.ToString()
Group By c Into Group
Select DigitGroup = New With {.Count = Group.Count(), .Digit = c, .Group = Group}
Order By DigitGroup.Count Descending, DigitGroup.Digit
Dim numCount = counts.FirstOrDefault(Function(grp) grp.Digit.ToString() = num.ToString())
If numCount IsNot Nothing Then
Dim numMessage = String.Format("There are {0} number {1}'s found.", numCount.Count, num)
MessageBox.Show(numMessage)
Else
MessageBox.Show("Your number does not contain a " & num)
End If
Else
MessageBox.Show("Please enter a number between 0 and 9.")
End If
End Sub
Private Sub btnGetNumber_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGetNumber.Click
btnEnter.Enabled = True
i = 0
Do Until i > 100
Dim randomInt = rnd.Next(0, 100000)
i = i + 1
i = rnd.Next(0, 100000)
Loop
End Sub
End Class
答案 0 :(得分:2)
将New Random()
移出该循环。将其设为全局并仅创建一次实例。
(随机生成器开始使用从当前时间获得的种子。在循环内声明一个随机变量会导致同一种子一次又一次地使用。这会返回相同的数字,从而破坏函数的随机性)就像:http://xkcd.com/221/
请参阅其他说明here
当然,如果你不增加用于控制循环的变量i
,你将永远循环
Dim i As Integer
Dim rnd As New Random()
.....
i = 0
Do Until i > 100
Dim randomInt = rnd.Next(0, 100000)
i = i + 1
Loop
说,现在我不知道你在这里想做什么。没有要检查的数组,并且您不使用从随机生成器获得的值,只是,您的i
变量以值101退出。
现在我只是猜测你的意图是什么,但也许你只想要这个?
i = rnd.Next(0, 100000)
这将为变量i
提供一个随机数,后续代码会检查i
中所需数字的数量
答案 1 :(得分:2)
首先,当您知道循环次数时,通常会使用For循环。
其次,你忘了在until循环中增加i
最后,您不需要在每个循环中重新声明rnd。这样的事情对我来说听起来更好:
Dim rnd As New Random()
For i = 1 To 100
Dim randomInt = rnd.Next( 0 , 100000 )
Next
答案 2 :(得分:1)
我看到你没有添加变量“i”来增加:
i = 1
Do Until i > 100
Dim rnd As New Random()
Dim randomInt = rnd.Next(0, 100000)
i+=1 'Increment value of i by 1, same as i = i + 1
Loop
如果不增加,“i”的变量将始终为1。检查一下,让我知道是否能解决问题!