今回は、確立を指定した抽選のコンテンツを作成したので、それの備忘録。
function array_rand_weighted($entries){ $sum = array_sum($entries); $rand = rand(1, $sum); foreach($entries as $key => $weight){ if (($sum -= $weight) < $rand) return $key; } } // 抽選候補となる配列 // キーが要素で、値が確立になる。 $entries = array( "1等" => 5, "ハズレ" => 95, ); // 抽選(こんな感じで使用する) $result_key = array_rand_weighted($entries); if ($result_key == "1等") { echo '1等です。'; } else { echo 'ハズレです。'; }
array_sum($array)
・配列の値の合計を計算します。
round(A,B)
・整数A~Bの範囲で乱数を発生します。
foreach($entries as $key => $weight){
}
・連想配列を使用したforeachi
$entries の連想配列。各配列を$keyで取り出し、その$keyに相当する値を$weightとして処理を繰り返す。
if (($sum -= $weight) < $rand) return $key;
・配列の合計値より、各配列の値を引いていって、乱数より小さい値になったときに、その配列の$keyを返す。