PHPでランダムに範囲内から重複しない数字を取り出す


指定した範囲の中から、重複しない数字をランダムに取り出すPHPです。
単純にランダムに取得していくと、重複する場合がありますが、今回は重複をしないように抜き出します。

関連記事の表示やおすすめ商品のピックアップ等まで、ランダムに表示させたい場面は多いので、最初から重複を避けた抜き出しを心がけたいですね。

SPONSORED LINK

とりあえず一つだけランダムで抜き出す場合

1~100までの数字から一つだけ抜き出す。

$num= mt_rand(1,100);

1から10までの数字からランダムに抜き出す

for ($i = 0 ; $i < 5 ; $i++){
    $num = mt_rand(1, 6);
    print $num."/";
}

5回ループしてみましょう。
すると、

1/2/9/3/9

同じ数字が重複してしまいました。

今回はこれを避ける方法です。

まずは数字の配列を作る

$ar_num = range(1,10);

これで1~10までの配列が完成しました。

数字が入った配列をシャッフルする

shuffle($ar_num);

これで格納された要素の順番がバラバラになった配列になりました。

シャッフルした配列を表示

for ($i = 0 ; $i < 5 ; $i++){
    print $ar_num[$i]."/";
}

5回ループしてみましょう。
すると、

6/3/9/1/4

絶対に同じ数字が重複する事はありません。

まとめ

並んだ数字からランダムに取得する方法と、数字をシャッフルしてから頭から取得する方法の違いですね。

今日も知識欲は止まらない。

SPONSORED LINK
トップへ戻る