- ベストアンサー
シャッフルしたデータを記録するには?
小テストのプログラムを作っています。 問題文と選択肢をシャッフルして表示させた後、答えのページでも出題のページと同じように表示させるにはどうしたらいいのでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
shuffleは本当にランダムの値をとっているわけではありません。 一定の乱数表を元にシードを使って初期化しています。 したがって問題ページでシードを作成して、答えのページにシード値を渡せば、 同じ配列であれば同じシャッフルの結果を得られます。 たとえば11~30までの数値のはいった配列$aと$bを用意し、 同じシード値で初期化したシャッフルを利用すると、同じ結果が確認できます。 <?PHP function make_seed() { list($usec, $sec) = explode(' ', microtime()); return (float) $sec + ((float) $usec * 100000); } $seed=make_seed(); $a=$b=range(11,30); srand($seed); shuffle($a); srand($seed); shuffle($b); print_r($a); print_r($b); ?>