Re: Re: Shuffle Cards Function

From: Date: Sun, 19 Aug 2001 23:00:19 +0000
Subject: Re: Re: Shuffle Cards Function
References: 1 2  Groups: php.general 
Request: Send a blank email to php-general+get-63432@lists.php.net to get a copy of this message
I could be wrong in thinking this, but wasn't the purpose of the presented function to shuffle a deck in a deliberately imperfecatly random way? ie. mimicking a human shuffler.... beats why one would want to do this as an academic excersize, but hey, I like it ;-) ----- Original Message ----- From: "Richard Lynch" <ceo@l-i-e.com> To: <php-general@lists.php.net> Sent: Sunday, August 19, 2001 9:45 PM Subject: [PHP] Re: Shuffle Cards Function > http://php.net/shuffle will be much faster and just as > random... > > -- > WARNING richard@zend.com address is an endangered species -- Use > ceo@l-i-e.com > 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 <bert@ncinter.net> > Newsgroups: php.general > To: <php-general@lists.php.net> > 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 - bert@ncinter.net > > > > > > > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, e-mail: php-general-unsubscribe@lists.php.net > For additional commands, e-mail: php-general-help@lists.php.net > To contact the list administrators, e-mail: php-list-admin@lists.php.net >

« previous php.general (#63432) next »