php - 转盘 抽奖 概率中奖项计算
//key:奖项key,value:中奖的概率占比或者份数
$array = ['key1' => 20, 'key2' => 40, 'key3' => 30, 'key5' => 10];
//return:返回中奖的key
$fun = function ($array) {
asort($array);//概率大小排序,分配区间,0-10-20-30-40;
$randNum = mt_rand(1, array_sum($array));//随机数
//print_r($randNum . PHP_EOL);
//区间判断
$start = 0;
foreach ($array as $key => $item) {
//构造区间数:0-10-20-30-40;
$start += $item;
//print_r('start:' . $start . ' key:' . $key . PHP_EOL);
if ($randNum <= $start) {
return $key;
}
}
};
var_dump($fun($array));
版权声明
本文仅代表作者观点,不代表博信信息网立场。
上一篇:linux中rpc是什么意思 下一篇:如何分析Volatile变量