Re: [PHP] Re: Shuffle Cards Function

2001-08-19 Thread Robert Schultz

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 - [EMAIL PROTECTED]


- Original Message -
From: "Tom Carter" <[EMAIL PROTECTED]>
To: "Richard Lynch" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
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" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> 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 [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))
&

Re: [PHP] Re: Shuffle Cards Function

2001-08-19 Thread Tom Carter

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" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
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 [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]
>


-- 
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]




[PHP] Re: Shuffle Cards Function

2001-08-19 Thread Richard Lynch

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]