完美洗牌就是将一副牌平均分成两份(26张)来交错洗牌,如此循环反复一定次数后,又变回洗牌前的顺序了。 即:a_1,a_2........a_n,b_1,b_2.........b_n的序列变为b_1,a_1,b_2,a_2.......b_n,a_n 我知道这代码很SHI,只是抛砖,向各位高人请教更好的算法,谢谢
完美洗牌就是将一副牌平均分成两份(26张)来交错洗牌,如此循环反复一定次数后,又变回洗牌前的顺序了。
//完美洗牌 //$time为洗牌次数 function pshuffle($time = 8){ $num = 52; $res = $data = range(1,$num); for($j=0;$j<$time;$j++){ if($newdata) $data = $newdata; for($i=0;$i<sizeof($data);$i++){ if($i<$num/2){ $newdata[$i*2] = $data[$i]; }else{ $key = $i * 2 - $num + 1; $newdata[$key] = $data[$i]; } } //返回次数 // if($newdata == $res){ // return $j+1; // break; // } } ksort($newdata); return $newdata; }