Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 做宾果游戏,每个人都有相同的号码_Vb.net_List_Random - Fatal编程技术网

Vb.net 做宾果游戏,每个人都有相同的号码

Vb.net 做宾果游戏,每个人都有相同的号码,vb.net,list,random,Vb.net,List,Random,我正在制作一个程序,为100人制作一张宾果卡,并给他们所有不同的数字。但是刚才我的代码给了每个人完全相同的15个数字。任何帮助都将不胜感激,谢谢 Structure Number Dim number As Integer End Structure Structure Player Dim name As String Dim numbers() As Number Dim numbers_left As In

我正在制作一个程序,为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

我承认我没有完全遵循所有的逻辑,但是看起来你需要在每个循环中重新初始化播放器,因为我认为你总是在测试第一个播放器

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
        For i = 1 To 100
            Dim Number As Number
            Dim player As Player
            ReDim player.numbers(14)
            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
是错误的。它将是
共享的
,如果有的话,但无论如何都没有必要。这不是问题。结构应该是一个类,每个应用程序始终使用一个随机数,除非/直到你知道你在做什么,请参阅更多/更好的选择方法以及一些随机信息。顺便说一句,你选择100个宾果值,但美国宾果使用75个数字,英国90个。如果你在上面的链接上使用Enumerable,你可以一次得到所有的数字,并将它们随机化,从而摆脱可怕的GoTosorry。你不能遵循所有的逻辑。我有点像我自己的想法,只有我最了解它。抱歉,汉克斯,如果这有效,你能接受这个答案吗?我对这个答案有点犹豫不决,因为我不了解最初发生的事情,但我想如果它对你有用的话。。。