【问题标题】:making a bingo game and everyone has the same number制作宾果游戏,每个人都有相同的号码
【发布时间】: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

标签: vb.net list random


【解决方案1】:

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

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

【讨论】:

  • 对不起。你无法遵循所有的逻辑。我有点自己的想法,只有我大部分理解。再次抱歉
  • 谢谢,如果这有效,你能接受这个作为答案吗?我对这个答案有点犹豫,因为我没有关注最初发生的事情,但我想它是否适合你......
猜你喜欢
  • 2022-11-23
  • 1970-01-01
  • 2016-08-18
  • 1970-01-01
  • 2012-09-06
  • 1970-01-01
  • 2021-05-19
  • 2015-05-06
  • 1970-01-01
相关资源
最近更新 更多