今回は、確立を指定した抽選のコンテンツを作成したので、それの備忘録。

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を返す。
