<?php
$gender = array(
'Male'=>30,
'Female'=>50,
'U' =>20);
$total = array_sum(array_values($gender));
$current = 0;
$rand = rand(1,$total);
foreach ($gender as $key=>$value)
{
$current += $value;
if ($current > $rand)
{
echo $key;
break;
}
}
?>
現時点では、加重パーセンテージに基づいてランダムな値を生成しようとしています。この例では、男性は 30% の確率、女性は 50%、U は 20% の確率です。コードのロジックが間違っていると感じたので、スクリプトを 100 回実行すると、通常は 30 人の男性が得られますが、そうではありませんでした。これを行うよりスマートな方法はありますか?