javascript - 从一个一维数组中按照概率取出对应key
本文介绍了javascript - 从一个一维数组中按照概率取出对应key的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
数组类似下面
array(
0 => 50,
1 => 60,
2 => 70,
)
某个子项的value值 除以 (数组value值的总和) 为这个项的概率。求如何按照概率 取出其中中的key值
解决方案
按照你的想法,应该是这样吧,你看是否符合你的要求
<?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;
}
这篇关于javascript - 从一个一维数组中按照概率取出对应key的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文