カードゲームやビンゴマシンを作る際には、配列のデータをシャッフルするアルゴリズムが重要
1 2 3 4 5 6 7 8 | $sample_ary = array (1,2,3,4,5); shuffle( $sample_ary ); // display result foreach ( $sample_ary as $v ){ echo $v . "\n" ; } |
フィッシャー・イェーツのシャッフル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <pre><?php // mt_rand() array shuffle function function mt_shuffle(& $a ){ $a = array_values ( $a ); for ( $i = count ( $a ) - 1; $i >= 1; $i --){ $r = mt_rand(0, $i ); list( $a [ $i ], $a [ $r ]) = array ( $a [ $r ], $a [ $i ]); } } // mt_shuffle() use example $sample_ary = array (1,2,3,4,5); mt_shuffle( $sample_ary ); foreach ( $sample_ary as $v ){ echo $v . "\n" ; } |