PHP ランダムに確立指定する

ここではPHP rand();関数に確立を設定するサンプルソースを記載しています。

サンプルソース

<?php
  
    $configs = array(
            array(
                    'probability' => 60,
                    'message' => '60%の確率で表示されます。'
            ),
            array(
                    'probability' => 30,
                    'message' => '30%の確率で表示されます。'
            ),
            array(
                    'probability' => 10,
                    'message' => '10%の確率で表示されます。'
            )
    );
  
    $count = count($configs);
    $max = 0;
  
    for ($i = 0; $i < $count; $i++) {
        $max += $configs[$i]['probability'];
    }
  
    $rand = rand(1, $max);
    $from = 0;
    $to = 0;
    $result = '';
  
    for ($i = 0; $i < $count; $i++) {
        $from = $to;
        $to += $configs[$i]['probability'];
  
        if ($from < $rand && $rand <= $to) {
            $result = $configs[$i]['message'];
        }
    }
  
    echo $result;

解説

probabilityの数値が大きいものを高確率で出しています。
数値の合計が100を超えたとしても数値の大きいものが出力されます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*