-1

I created an application which gets random numbers. However my IF statement does not seem to be working and I keep coming up with duplicate numbers.

The code is:

Public Class Form1

Dim number As Integer
Dim star As Integer
Dim getNumber As Random = New Random()
Dim getStar As Random = New Random()

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

End Sub

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

    If (number1.Text = number2.Text) Or (number1.Text = number3.Text) Or (number1.Text = number4.Text) Or (number1.Text = number5.Text) Then
        If (number2.Text = number1.Text) Or (number2.Text = number3.Text) Or (number2.Text = number4.Text) Or (number2.Text = number5.Text) Then
            If (number3.Text = number1.Text) Or (number3.Text = number2.Text) Or (number3.Text = number4.Text) Or (number3.Text = number5.Text) Then
                If (number4.Text = number1.Text) Or (number4.Text = number2.Text) Or (number4.Text = number3.Text) Or (number4.Text = number5.Text) Then
                    If (number5.Text = number1.Text) Or (number5.Text = number2.Text) Or (number5.Text = number3.Text) Or (number5.Text = number4.Text) Then
                        number5.Text = CStr(getNumber.Next(1, 50))
                        number4.Text = CStr(getNumber.Next(1, 50))
                        number3.Text = CStr(getNumber.Next(1, 50))
                        number2.Text = CStr(getNumber.Next(1, 50))
                        number1.Text = CStr(getNumber.Next(1, 50))
                    Else
                        number5.Text = ""
                    End If
                Else
                    number4.Text = ""
                End If
            Else
                number3.Text = ""
            End If
        Else
            number2.Text = ""
        End If
    Else
        number1.Text = ""
    End If

    If (star1.Text = star2.Text) Then
        If (star2.Text = star1.Text) Then
            star1.Text = CStr(getStar.Next(1, 11))
            star2.Text = CStr(getStar.Next(1, 11))
        Else
            star1.Text = ""
            star2.Text = ""
        End If
    End If

End Sub

Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click

    number1.Clear()
    number2.Clear()
    number3.Clear()
    number4.Clear()
    number5.Clear()
    star1.Clear()
    star2.Clear()

End Sub
End Class

Could anyone help me to solve this?

Thank you

Ben
  • 51,770
  • 36
  • 127
  • 149
  • 1
    It's not at all clear from your code what it is that you are trying to do, so what is it that you are trying to do? – Guffa Nov 04 '12 at 19:58
  • Im trying to get random numbers in the five "number" textboxes after the button is clicked. But in some instances when it is clicked some textboxes have the same numbers e.g. 49 and 49. But I want all the numbers to be different that is why I created an IF statement –  Nov 04 '12 at 20:00
  • This is pretty much a duplicate of another question: http://stackoverflow.com/questions/18676/random-int-in-vb-net – Derek Tomes Nov 04 '12 at 20:21
  • Why did you remove all the information from the question? Now the comments and answers are meaningless! – Chris Dunaway Nov 05 '12 at 15:54

1 Answers1

1

You are checking for matches before the values are set, so the code doesn't look at what values are set at all.

Set the values first, and loop until you find an unused value:

number1.Text = CStr(getNumber.Next(1, 50))
Do
  number2.Text = CStr(getNumber.Next(1, 50))
Loop While number1.Text = number2.Text
Do
  number3.Text = CStr(getNumber.Next(1, 50))
Loop While number1.Text = number3.Text Or number2.Text = number3.Text
Do
  number4.Text = CStr(getNumber.Next(1, 50))
Loop While number1.Text = number4.Text Or number2.Text = number4.Text Or number3.Text = number4.Text
Do
  number5.Text = CStr(getNumber.Next(1, 50))
Loop While number1.Text = number5.Text Or number2.Text = number5.Text Or number3.Text = number5.Text Or number4.Text = number5.Text
Guffa
  • 687,336
  • 108
  • 737
  • 1,005
  • Oh I understand thank you. So the above would work I presume? –  Nov 04 '12 at 20:18
  • @henry: Yes, it should. I haven't tested the code, but the principle is sound, so unless there is a typo it works. – Guffa Nov 04 '12 at 22:17