首頁 > php教程 > php手册 > 完美洗牌算法

完美洗牌算法

WBOY
發布: 2016-06-06 19:33:38
原創
1588 人瀏覽過

完美洗牌就是将一副牌平均分成两份(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张)来交错洗牌,如此循环反复一定次数后,又变回洗牌前的顺序了。
即: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,只是抛砖,向各位高人请教更好的算法,谢谢!
 
	//完美洗牌
        //$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;
	}
登入後複製
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板