【问题标题】:How to generate random numbers between given range?VB.NET如何在给定范围内生成随机数?VB.NET
【发布时间】:2017-06-27 00:18:26
【问题描述】:

我正在尝试创建computer guess game,其中我认为1-100 和计算机之间的数字在1-100 之间生成随机数,并且用户给出生成的数字太低或太高或正确猜测的响应。EG 计算机生成数字23 如果我输入L 那么下次它会生成介于1 t0 23 之间的数字。如果下次它显示10 然后我按H 那么它将生成介于10 和23 之间的数字希望你明白我的意思我正在尝试做。H 也是如此。 谢谢 这是我尝试的代码

  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    'Declare Variables
    Dim strGuess As Char
    Dim random As New Random
    Dim answer As Integer
    Dim low As Integer
    Dim high As Integer
   Line1:
    MessageBox.Show("You pick a number between 0 and 100 and i will try to guess.Respond")
    answer = random.Next(1, 100)
    strGuess = InputBox("Is it " & answer, "Number Guessing Game")

    ' lstGuesses.Items.Add(strGuess)'
    low = answer
  Line2:
    If (CChar(strGuess) = CChar("L")) Then

        low = random.Next(1, low)
        strGuess = InputBox("Is it " & low, "Number Guessing Game")

    End If

    GoTo Line2

    high = answer
  Line7:
    If (CChar(strGuess) = CChar("H")) Then

        high = random.Next(high, 100)
        strGuess = InputBox("Is it " & high, "Number Guessing Game ")

    End If
    GoTo Line7
 End Sub

【问题讨论】:

  • 我不了解VB,但想问一下,这段代码有没有循环?我的意思是一旦你按下 H 按钮,算法如何再次回到 Line2 来检查你是否按下 L 按钮?
  • 感谢您的回复。我使用random 函数,如果我按H,那么它将在前一个数字和100 之间生成随机数,如果我按L,它将生成介于1 和1 之间的数字前一个数字。我使用 if 语句检查 LH
  • 关于算法的另一个问题。假设计算机选择 15 但我想要 30。15
  • 我认为1-100 和计算机之间的数字猜我的数字,我以LH 和@ 的形式回复计算机生成的数字太低、太高或正确987654337@ 示例:如果选择数字,请记住40 并且计算机显示is it 20 然后我输入输入框L 表示太低然后计算机将生成下一个大于20 的数字下次如果计算机显示45 那么我把H 的意思是太高然后计算机生成数字打击 45,希望你理解
  • 例如,如果我在脑海中想到 50 个数字。计算机生成 1 到 100 之间的任何数字。如果计算机显示是 60,那么我给出响应输入框L,然后计算机生成 60 个随机数。接下来如果它显示 40 然后我按 H 然后我将生成 40-60 之间的数字

标签: vb.net random numbers


【解决方案1】:

试试这个代码,

Public Class Form1
Dim strGuess As Char
Dim random As New Random
Dim answer As Integer
Dim low As Integer = 1
Dim high As Integer = 100
Dim Attempt As Integer = 0

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    MessageBox.Show("You pick a number between 0 and 100 and i will try to guess.Respond")
    answer = random.Next(1, 100)
    strGuess = InputBox("Is it " & answer, "Number Guessing Game")

    If strGuess = "L" Then
        low = answer
        LowFunc(answer)
    ElseIf strGuess = "H" Then
        high = answer
        HighFunc(answer)
    ElseIf strGuess = "R" Then
        MsgBox("I guessed it in " & Attempt & " tries")
    ElseIf strGuess = "X" Then
        End
    End If

End Sub

Private Function LowFunc(ByVal answer As Integer)

    Attempt = Attempt + 1

    answer = random.Next(low, high)
    strGuess = InputBox("Is it " & answer, "Number Guessing Game")

    If strGuess = "L" Then
        low = answer
        LowFunc(answer)
    ElseIf strGuess = "H" Then
        high = answer
        HighFunc(answer)
    ElseIf strGuess = "R" Then
        MsgBox("I guessed it in " & Attempt & " tries")
    ElseIf strGuess = "X" Then
        End
    End If

    Return Nothing
End Function

Private Function HighFunc(ByVal answer As Integer)

    Attempt = Attempt + 1

    answer = random.Next(low, high)
    strGuess = InputBox("Is it " & answer, "Number Guessing Game")

    If strGuess = "H" Then
        high = answer
        HighFunc(answer)
    ElseIf strGuess = "L" Then
        low = answer
        LowFunc(answer)
    ElseIf strGuess = "R" Then
        MsgBox("I guessed it in " & Attempt & " tries")
    ElseIf strGuess = "X" Then
        End
    End If

    Return Nothing
End Function
End Class

--

在查看了您提供的Link 之后,我更新了此代码。它将继续生成highlow 之间的随机数。 highlow 的值将相应更改为输入 HL,这将由玩家/用户提供,当猜到正确的数字时,玩家/用户应将 R 作为输入。他们可以提供X 作为退出应用程序的输入。 Attempt 将显示尝试了多少次才能猜出正确的数字。

【讨论】:

  • 感谢您的回复。当我多次按H 时,它会给我相同的号码。号码不会改变。按3,4 次H 后,这将给出相同的号码。号码不会改变。谢谢
  • 大部分情况下工作正常,但有时会卡在同一个号码上
  • 我在查看了您提供的链接后更新了代码。
  • 非常感谢。你救了我。再次感谢你。你伟大的先生。请给我你的电子邮件先生。我的电子邮件是hameed7475@gmail.com
猜你喜欢
  • 2014-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-13
  • 2014-01-29
  • 2017-03-06
  • 2011-05-09
相关资源
最近更新 更多