52枚のカードをシャッフルする、53枚のカードをシャッフルするでの議論の意味することを考えてみます。
52枚の時は8回で元に戻ります。53枚の時は52回で元に戻ります。すなわち、53枚のほうがカードがばらつく、と考えられます。これがジョーカーの価値です。通常のカードはシンボルがスペードハートダイヤクラブの4個、数字がA, K, Q, J, 10, 9, 8, 7, 6, 5, 4, 3, 2 の13個で52枚のところ、ジョーカーを一枚加えると53枚になります。
もちろんジョーカーはたいていのゲームで特別な役割を持つわけですが、カードシャッフルにおいても、1枚増やすことが大きな影響を与えるわけです。
プログラムのソースコードを掲載しておきます。
<?php
$num_card = 0;
$num_shuffle = 0;
class player {/*{{{*/
var $values = array();
var $num = 0;
var $devide = 0;
function player($num) {
$this->num += $num ;
$this->devide += $this->num ;
if ( 0 == $this->num % 2 ) {
$this->devide-- ;
}
for ($i=0;$i<$this->num;$i++) {
array_push( $this->values, $i );
}
$this->output();
}
function shuffle() { /*{{{*/
for ($i=0;$i<$this->num;$i++) {
$this->values[$i] = $this->values[$i] * 2 % $this->devide ;
}
} /*}}}*/
function output() {
echo "(";
echo implode(", ", $this->values);
echo ")<br>n";
}
}/*}}}*/
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<?php
if (2 <= $_POST['card'] && 60 >= $_POST['card'] && 1 <= $_POST['timeshuffle'] && 60 >= $_POST['timeshuffle'] ) {
$num_card += $_POST['card'] ;
$num_shuffle += $_POST['timeshuffle'] ;
$obj = new player($num_card);
print "<hr>";
for ($j=0;$j<$num_shuffle;$j++) {
$obj->shuffle();
$obj->output();
}
}
?>
<form action="53card.php" method="post">
カードの枚数(2-60):
<input type="text" size=5 name="card" value="">
シャッフル回数(1-60):
<input type="text" size=5 name="timeshuffle" value="">
<input type="submit" name="submit" value="submit">
</form>
</body>
</html>