这篇文章主要介绍了关于php 与 js 中奖概率的算法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
经典的概率算法。
现在有数组:[10, 20, 30, 40] 。
假设对应中奖几率:特等奖10%,一等奖20%,二等奖30%,三等奖40%,总共100%。
算法开始时,从数组中选出一个值$value,再从1-100概率空间内随机选出一个数$rand。
立即学习“PHP免费学习笔记(深入)”;
比较$value和$rand,如果$rand在$value概率范围之内,则直接返回$value对应的key。
如果不在,则将概率空间的值减去$value值。
在本例中,第一次判断之后,就是减去10,也就是说第二次是在1-90这个范围内筛选的。
这样筛选到最后,总会有一个数满足要求。
就相当于去一个箱子里摸东西,
第一个不是,第二个不是,第三个还不是,那最后一个一定是。
这个算法简单,而且效率非常高。
PHP实现
$value) {
$rand = mt_rand(1, $sum);
if ($rand <= $value) {
$result = $key;
break;
} else {
$sum -= $value;
}
}
unset ($arr);
return $result;
}
使用范例:
$a = [10, 20, 30, 40];
// 输出3的概率最大
echo 'PHP:' . getRand($a);Javascript实现
使用范例:
// 使用示例,输出3的概率最大
var a = [10, 20, 30, 40];
document.write('
Javascript:' + getRand(a));以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:










