Hey,

Have a quick question about which is better to get real random values, shuffle 
or mt_rand.

I am trying to shuffle a deck of cards and reading another thread I saw that 
after a couple of thousand random generations patterns have been observed using 
rand()... so its better to use mt_rand().

After i wrote a function (copied below) to get real random cards from a 52 
deck, Tijnema from the list kindly sent me a piece of code thats 
simpler/faster/should or would use less processing and does exactly what my 
function does except it uses shuffle()...

Any idea which would be better to constantly generate proper random numbers for 
a long period of time?


========= My original code with mt_rand() ============

function load_cards($no_of_players)
{
    $i=0;
    $cards=array();

while($i<1)
    {

    
        if(empty($cards[0]))
        {
            $cards[]=mt_rand(1,52);
        }
        else
        {            
            $no_of_cards_already_in_array=count($cards);
            $cards_to_be_dealt=$no_of_players * 2; 
            $cards_to_be_dealt=$cards_to_be_dealt + 5;

            if($no_of_cards_already_in_array < $cards_to_be_dealt)
            {
                    $new_generated_card=mt_rand(1,52);

                if(!in_array($new_generated_card,$cards))
                {
                $cards[]=$new_generated_card;
                }
            }else
                {
                // end the loop
                $i=2;
                break; // just in case the above does not break outa the loop.
                }

        }
    }
    return $cards;
}


========== Contributed code ===================
// only generating 5 numbers here
$deck=array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52);
shuffle($deck);


for($i=0; $i<5; $i++)
{
$card = array_pop($deck);
echo $card."<br>";
}

==============================================


Any comments and suggestions are also welcome.

Thanks!
Ryan





------
- The faulty interface lies between the chair and the keyboard.
- Creativity is great, but plagiarism is faster!
- Smile, everyone loves a moron. :-)
       
---------------------------------
Need a vacation? Get great deals to amazing places on Yahoo! Travel. 

Reply via email to