如何生成给定范围内的随机数?VB.NET

问题描述:

我想创建computer guess game其中我认为1-100和计算机之间的数字生成1-100之间的随机数和用户给出生成的数字太低或太高或正确guess.EG计算机生成数23如果我L那么下次就会产生1个T0 23.If下一次之间的号码,如果它显示10然后我按01​​那么它将10之间产生的数字和23希望你明白给输入了我我正在试图做。和H一样。 感谢 这里是我的代码,我尝试如何生成给定范围内的随机数?VB.NET

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 
+0

我不知道VB,但想问一下,这个代码有没有循环?我的意思是一旦你点击H按钮,algaorythm又会如何回到Line2来检查你是否击中了L按钮? – ReadyFreddy

+0

感谢您的回复。如果我按'H',使用'随机'功能,那么它将产生前一个数字和100之间的随机数字,如果我按'L',那么它将生成1和前一个数字之间的数字。我使用if语句检查'L'和'H' – uiit

+0

关于algorythm的另一个问题。可以说电脑选择15,但我想30. 15 ReadyFreddy

试试这个代码,

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会显示多少次尝试猜测正确的数字。

+0

感谢response.When我按'H'许多时间,然后就会给我相同数量。数不会改变。按3,4次'H'后会给出相同的数字。数字不变。感谢 – uiit

+0

请检查这[LINK](https://i.imgsafe.org/c4520011bc.jpg)。 – uiit

+0

大多数情况下它的工作正常,但有时它会卡住相同的数字 – uiit