Heim > php教程 > php手册 > Hauptteil

完美洗牌算法

WBOY
Freigeben: 2016-06-06 19:33:38
Original
1570 Leute haben es durchsucht

完美洗牌就是将一副牌平均分成两份(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;
	}
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage