Re: Re: Shuffle Cards Function

From: Date: Mon, 20 Aug 2001 02:34:26 +0000
Subject: Re: Re: Shuffle Cards Function
References: 1 2 3  Groups: php.general 
Request: Send a blank email to php-general+get-63442@lists.php.net to get a copy of this message
Well, I required a function to mimick a human shuffle. Because the online shuffle was to help the user predict what sort/types of deals he would get with a given deck based upon a normal human shuffle. Plus, I've heard some bad things about shuffle, and of course, shuffe doesn't mimick a non-perfect human shuffle. Robert Schultz - bert@ncinter.net ----- Original Message ----- From: "Tom Carter" <subs@roundcorners.com> To: "Richard Lynch" <ceo@l-i-e.com>; <php-general@lists.php.net> Sent: Sunday, August 19, 2001 7:00 PM Subject: Re: [PHP] Re: Shuffle Cards Function > 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 > > > > > -- > 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 (#63442) next »