【发布时间】:2017-10-30 00:04:31
【问题描述】:
我正在编写一个程序,可以为 100 人创建一张宾果卡,并为他们提供所有不同的数字。但刚才我的代码是给每个人完全相同的 15 个数字。任何帮助将不胜感激,谢谢。
Structure Number
Dim number As Integer
End Structure
Structure Player
Dim name As String
Dim numbers() As Number
Dim numbers_left As Integer
End Structure
Dim players As New List(Of Player)
Dim selectednumber As Integer
Dim used As New List(Of Integer)
Dim random As New Random
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim Number As Number
Dim player As Player
ReDim player.numbers(14)
For i = 1 To 100
For j = 0 To 14
SelectNumber: Number.number = random.Next(1, 101)
If player.numbers IsNot Nothing Then
For Each item In player.numbers
If item.number = Number.number Then
GoTo SelectNumber
End If
Next
End If
player.numbers(j).number = Number.number
Next
player.name = ("Bill" & i)
player.numbers_left = 15
players.Add(player)
Next
End Sub
【问题讨论】:
-
那么,随机方法总是创建相同的数字?
-
你能把随机变量设为静态吗?
-
Static是错误的。如果有的话,那就是Shared,但无论如何都不需要。这不是问题。 -
结构应该是一个类,并且每个应用程序始终使用一个随机数,除非/直到您知道自己在做什么,另请参阅Pick unique Random numbers 了解更多/更好的选择方法以及一些随机信息跨度>
-
顺便说一句,您选择 100 个 Bingo 值,但美国 Bingo 使用 75 个数字和英国 90 个。如果您在上面的链接上使用 Enumerable,您可以一次获得所有数字并随机化它们并摆脱那个可怕的 GoTo