Question : C# random number question

hi experts,

I wrote the following code with expectation that it will generate 100 random numbers evenly distributed from -100 to 100. However, it produced blocks of same numbers, examples of the screenshots are attached as JPG. I attached two screens.

Can anyone explain why it would produce results like this? If it is the Random() fault, as we all know a lot of microsoft method/functions don't generate real statistical randoms, how can we fix it?

Thanks you for your attention.

 

//////////////////////////////////////////////////////////////////////////////////////////

for (int i = 0; i < 100; i++)
            {
                Random randomNumber = new Random();
                int n1 = randomNumber.Next(-100, 100);
                int n2 = Math.Abs(n1);
                Console.WriteLine("original={0}, and abs={1}", n1, n2);
            }

//////////////////////////////////////////////////////////////////////////
Attachments:

Answer : C# random number question

Add a sleep()

           for ( int i = 0; i < 100; i++ )
           {
               System.Threading.Thread.Sleep( 200 );
               Random r = new Random( (int)DateTime.Now.Ticks );
               int n1 = r.Next( -100, 100 );
               int n2 = Math.Abs( n1 );
              // Console.WriteLine() here.
           }

Random Solutions  
 
programming4us programming4us