具有分数的PHP数组概率

Lia*_*nat 4 php random math

我有以下数组:

public $percentage = array(
   0 => 20.30,
   1=> 19.96,
   2=> 14.15,
   3=> 45.59
);
Run Code Online (Sandbox Code Playgroud)

//它总和为100%

我需要一个随机函数来按键的百分比返回密钥,

例如:获得0的可能性是20.30%,获得2的可能性是14.15%,第一个用户获得0,第二个获得2.

请让我知道你建议我使用的功能是什么.

Ant*_*ony 7

将百分比转换为累积概率,然后将其与随机数进行比较.

如果随机数属于某个类别,则输出结果.如果没有,请转到下一个,直到找到一个.这允许您根据数组中指定的百分比概率输出数字.

$percentage = array(
   0 => 20.30,
   1=> 19.96,
   2=> 14.15,
   3=> 45.59
);
$random = mt_rand(0,10000)/100;
foreach ($percentage as $key => $value) {
    $accumulate += $value;
    if ($random <= $accumulate) {
        echo $key;
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)