Home All Groups Group Topic Archive Search About

Random number problem

Author
14 Feb 2006 11:08 PM
tshad
I am trying to create some random numbers to create an ID and am having
problems with getting the same number over and over.

I have a function:

Function RandomNumber(min as Integer, max as Integer) as integer
  Dim random as Random = new Random()
  RandomNumber = random.Next(min, max)
End Function

If I call this 3 times:

  id = RandomNumber(0, 10))
  id = RandomNumber(0, 10))
  id = RandomNumber(0, 10))

I will get the same number each time.

I assume this is because it is based on the clock and uses the same seed if
call one after another.  Is there a good way around this?

Thanks,

Tom

Author
14 Feb 2006 11:34 PM
AMercer
> I am trying to create some random numbers to create an ID and am having
> problems with getting the same number over and over.
>
>  Function RandomNumber(min as Integer, max as Integer) as integer
>   Dim random as Random = new Random()
>   RandomNumber = random.Next(min, max)
>  End Function
>

Replace Dim with Static:
   Static random As New Random
What you want to do is call random.Next on the same object over and over
again.  You don't want to make a new instance at every call.
Author
14 Feb 2006 11:51 PM
tshad
Show quote Hide quote
"AMercer" <AMer***@discussions.microsoft.com> wrote in message
news:2DC502DF-7C61-4D08-8C17-9F1D694F24B9@microsoft.com...
>> I am trying to create some random numbers to create an ID and am having
>> problems with getting the same number over and over.
>>
>>  Function RandomNumber(min as Integer, max as Integer) as integer
>>   Dim random as Random = new Random()
>>   RandomNumber = random.Next(min, max)
>>  End Function
>>
>
> Replace Dim with Static:
>   Static random As New Random
> What you want to do is call random.Next on the same object over and over
> again.  You don't want to make a new instance at every call.

That was what I needed.

Thanks,

Tom
Author
15 Feb 2006 6:00 PM
Jim Wooley
> I am trying to create some random numbers to create an ID and am
> having problems with getting the same number over and over.
>
> I assume this is because it is based on the clock and uses the same
> seed if call one after another.  Is there a good way around this?

In 2005, you may want to look into the Cryptography namespace, specifically
System.Security.Cryptography.RandomNumberGenerator. It is more reliable in
terms of creating true random results.

Jim Wooley