重み付きの抽選ロジック
<?php $targets = array(500,300,100,99,1); // 抽選対象 $sum = array_sum($targets); // レート合計 $total = 0; // レート累計 $rand = rand(1, $sum); // 乱数 foreach($targets as $key => $value) { $total += $value; if ($rand <= $total) { $result = $key; break; } } echo $result; // 抽選結果($targetsの添字)
補足:
・$sumが100になるように調整すれば1%きざみ、1000であれば0.1%きざみのレートになる
・rand(1, $sum)の開始位置をスライドする事により、抽選補正などができる。例)rand($sum,$sum)で100%