配列のデータをシャッフル

カードゲームやビンゴマシンを作る際には、配列のデータをシャッフルするアルゴリズムが重要

    $sample_ary = array(1,2,3,4,5);

    shuffle($sample_ary);

// display result
    foreach ($sample_ary as $v){
    echo $v."\n";
    }

フィッシャー・イェーツのシャッフル

<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";
    }