http://php.net/shuffle will be much faster and just as random...

--
WARNING [EMAIL PROTECTED] address is an endangered species -- Use
[EMAIL PROTECTED]
Wanna help me out?  Like Music?  Buy a CD: http://l-i-e.com/artists.htm
Volunteer a little time: http://chatmusic.com/volunteer.htm
----- Original Message -----
From: Robert Schultz <[EMAIL PROTECTED]>
Newsgroups: php.general
To: <[EMAIL PROTECTED]>
Sent: Saturday, August 18, 2001 11:37 PM
Subject: Shuffle Cards Function


> I've written a ShuffleCards function that will actually shuffle a deck of
> cards just like would happen in real life (divide the deck in half and
stick
> them into each other with 1-3 cards between each other card)
>
>    function ShuffleCards(&$cardsArray, $times)
>    {
>     // Randomizes where to split within center (-3 to +3 from dead center)
> (MINIMUM 10 CARDS IN DECK)
>     // Splits into two array. Randomizes how many cards from left and how
> many cards from right (between 1 and 3)
>     // Alternates sides. Continues until both arrays are empty.
>     $arraySize = count($cardsArray);
>
>     if($arraySize<10)
>      return;
>
>     $deadCenter = $arraySize/2;
>
>     for($i=0;$i<$times;$i++)
>     {
>      reset($cardsArray);
>
>      $cutVariant = rand(-3, 3);
>      $cutLocation = $deadCenter+$cutVariant;
>
>      $firstArray = array();
>      $secondArray = array();
>
>      for($z=0;$z<$arraySize;$z++)
>      {
>       if($z<$cutLocation)
>        array_push($firstArray, $cardsArray[$z]);
>       else
>        array_push($secondArray, $cardsArray[$z]);
>      }
>
>      $bottomFirst = rand(0, 1);
>      $cardsArray = array();
>
>      while(count($firstArray) && count($secondArray))
>      {
>       $leftNewCards = array();
>       $rightNewCards = array();
>
>       $leftVariant = rand(1, 3);
>       if($leftVariant>count($firstArray))
>        $leftVariant = count($firstArray);
>
>       $rightVariant = rand(1, 3);
>       if($rightVariant>count($secondArray))
>        $rightVariant = count($secondArray);
>
>
>       for($x=0;$x<$leftVariant;$x++)
>       {
>        array_push($leftNewCards, array_shift($firstArray));
>       }
>
>       for($y=0;$y<$rightVariant;$y++)
>       {
>        array_push($rightNewCards, array_shift($secondArray));
>       }
>
>       if($bottomFirst==0)
>       {
>        $newCardsArray = array_merge($leftNewCards, $rightNewCards);
>        $bottomFirst = 1;
>       }
>       else
>       {
>        $newCardsArray = array_merge($rightNewCards, $leftNewCards);
>        $bottomFirst = 0;
>       }
>
>       reset($newCardsArray);
>
>       while(count($newCardsArray))
>       {
>        array_push($cardsArray, array_shift($newCardsArray));
>       }
>      }
>
>      if(count($firstArray))
>      {
>       while(count($firstArray))
>        array_push($cardsArray, array_shift($firstArray));
>      }
>      if(count($secondArray))
>      {
>       while(count($secondArray))
>        array_push($cardsArray, array_shift($secondArray));
>      }
>     }
>    }
>
> Robert Schultz - [EMAIL PROTECTED]
>
>
>


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to