ARTICLE

Non-Repeating Random Numbers

Posted by Graham Articles | VB.NET Tutorials August 02, 2006
This article show how to get six non-repeated random numbers, or anything else you want.
 
Reader Level:

Here is a simple tutorial to help pick six non-repeating numbers or any non-repeating elements you want to use. i.e. the Alphabet. As always we start with the Dim statements

Dim intNumber As Integer
Dim arrNumber(0 To 5) As Integer
Dim i, x, y As Integer

There are only two controls needed on the form one is a Button and the other is a Label. In the Buttons Event Procedure is where all the code is placed to pick the random numbers and display the results in the Label. First make sure that the Label is empty.

Label1.Text = ""

Now we need to set up a For / Next Loop to hold six numbers,

For y = 0 To 5

Next x

So, our For / Next Loop will go around six times, but without some more code it will not be very interesting. What follows next is the code that will do the magic. You will notice that inside our For / Next x Loop we have a nested For / Next y Loop. This is the Loop that checks if the Random number has already been picked.

How? Well, first the random number is checked to see if it exists in our arrNumber(y), remember the tutorials on Arrays? So it looks at the first place in the array which first time the loop is entered is (0) in fact this is what the array looks like to start with.

arrNumber(0) = 0

arrNumber(1) = 0

etc

arrNumber(5) = 0

After the y Loop has finished and no numbers in the arrNumber have been found it moves on to the last bit of code inside the x For / Next Loop so that we get, assuming our first Random Number was 19 the following arrNumber(0) = 19 once this is done off it goes again First y Loops to see if the second Random Number has been already been picked. Array y now looks like this

arrNumber(0) = 19

arrNumber(1) = 0

etc

arrNumber(5) = 0

If the second Random Number is 38 then as it Loops through the y Array it will not find 38, so it moves on and places 38 in the x Array (Not Medical!) Off it goes again this time let's say the Random Number is 19 again, as the y Loop is performed it finds 19 in arrNumber (0) position so now it uses GoTo and jumps up to Start: where it picks another Random Number to try, it keeps doing this until all six places in the Array are filled with Non-Repeating Numbers.

See the code below.

        For x = 0 To 5

Start:      Randomize()

intNumber = Int((49 * Rnd()) + 1

            For y = 0 To 5

                If intNumber = arrNumber(y) Then

Then GoTo

                    Start()

                End If

            Next y

            arrNumber(x) = intNumber

        Next x

The last stage is to place the numbers in to the Label

For i = 0 To 5

Label1.Text = Label1.Text & (arrNumber(i)) & " , "

Next

The full code is here for you to Copy (Ctrl+C) and Paste (Ctrl+V)

Public Class Form1 ' Dimension the variables used in the programme  

    Dim intNumber As Integer 

    Dim arrNumber(0 To 5) As Integer  

    Dim i, x, y As Integer

 

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

 

        'Make sure the Label is clear  

        Label1.Text = "" 

        'We want a total of 6 Numbers (UK Lottery)  

        For x = 0 To 5

Start:      Randomize()

            intNumber = Int((49 * Rnd()) + 1) ' Random number 1 to 49

            For y = 0 To 5 ' Check arrNumber (y)

                'If intnumber has already been selected,

                'Then go and select another one.

                If intNumber = arrNumber(y) Then

 

Then GoTo Start  

                End If 

            Next y 

            'Place the next non-repeated number in the arrNumber(x).  

            arrNumber(x) = intNumber 

        Next x
 

        '----------------------------------------------------  

        For i = 0 To 5 

            Label1.Text = Label1.Text & (arrNumber(i)) & " , " 

        Next 

    End Sub 

End Class

Login to add your contents and source code to this article
share this article :
post comment
 

hi, frnds i need the code to produce a graph based on computations for example for exam result ...is it possible using vb.net win forms and sql server ..not using asp or c#

Posted by kavitha May 08, 2007
6 Months Free & No Setup Fees ASP.NET Hosting!
Become a Sponsor
PREMIUM SPONSORS
  • Finally – a virtual platform that delivers next-generation Windows Server 2008 Hyper-V virtualization technology from a managed hosting partner you can truly depend on. Visit www.maximumasp.com/max for a FREE 30 day trial. Hurry offer ends soon. Climb aboard the MaxV platform and take advantage of High Availability, Intelligent Monitoring, Recurrent Backups, and Scalability – with no hassle or hidden fees. As a managed hosting partner focused solely on Microsoft technologies since 2000, MaximumASP is uniquely qualified to provide the superior support that our business is built on. Unparalleled expertise with Microsoft technologies lead to working directly with Microsoft as first to offer IIS 7 and SQL 2008 betas in a hosted environment; partnering in the Go Live Program for Hyper-V; and product co-launches built on WS 2008 with Hyper-V technology.
    The leading .NET charting control now features PDF, Flash and Silverlight export, visualization of large datasets and more. Deliver true charting functionality to your BI, Scorecard, Presentation or Scientific apps. Download evaluation now.
Team Foundation Server Hosting
Become a Sponsor