Rand函数产生不均匀的结果

In my program, the average value of $integers[0]->occurences should be 20000.Why it's always larger than 20000, even after using srand()?

<?php 
        define('NUM_OF_INTS',49);    
        define('DRAWS',1000000);

            class number
            {
               public $occurences;
               public $value;

               function number()                     
               {
                   $occurences=0;
                   $value=0;
               }
            }

            $integers = array();

            //srand(time(0));
            //initialising loop
            for($i=0;$i<=NUM_OF_INTS;$i++)
            {    
                $integers[$i] = new number(); 
                $integers[$i]->value = $i;

            }
            for($i=0;$i<DRAWS;$i++)
            {                  
                $integers[rand(0,NUM_OF_INTS)]->occurences++;               
            }

            foreach($integers as $int)
                printf("%5d %5d  <br/>",$int->value,$int->occurences);
        ?>

You say that you're using WAMP.

PHP's rand() isn't very random on Windows (it only generates 15 bits of randomness) so it's unable to distribute its random numbers evenly enough between the 50 bins.

In particular, bin 0 will receive 656 / 32768 of the random numbers, which is about 0.0200195

Have you tried using PHP's mt_rand as your generator? It is better at getting a even distribution than rand.

you can also generate two random numbers and concatenate them to get long ones.

e.g.

//desired length of 16
rand16digits = str_pad(mt_rand(0,99999999), 8 , "0").mt_rand(10000000,99999999);