数组类似下面array( 0 => 50, 1 => 60, 2 => 70,)某个子项的value值 除以 (数组value值的总和) 为这个项的概率。求如何按照概率 取出其中“中”的key值
1 回答

慕的地10843
TA贡献1785条经验 获得超8个赞
按照你的想法,应该是这样吧,你看是否符合你的要求
<?php
$arr = array(20,30,50);
$res = getRand($arr);
var_dump($res);
function getRand($arr) {
$result = '';
//概率数组的总概率精度
$Sum = array_sum($arr);
//概率数组循环
foreach ($arr as $key => $val) {
$randNum = mt_rand(1, $Sum); //抽取随机数
if ($randNum <= $val) {
$result = $key; //得出结果
break;
} else {
$Sum -= $val;
}
}
unset ($arr);
return $result;
}
return $result;
}
添加回答
举报
0/150
提交
取消