摘要:经典的概率算法。假设对应中奖几率特等奖,一等奖,二等奖,三等奖,总共。比较和,如果在概率范围之内,则直接返回对应的。如果不在,则将概率空间的值减去值。这个算法简单,而且效率非常高。
经典的概率算法。
现在有数组:[10, 20, 30, 40] 。
假设对应中奖几率:特等奖10%,一等奖20%,二等奖30%,三等奖40%,总共100%。
算法开始时,从数组中选出一个值$value,再从1-100概率空间内随机选出一个数$rand。
比较$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));
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/28925.html
摘要:经典的概率算法。假设对应中奖几率特等奖,一等奖,二等奖,三等奖,总共。比较和,如果在概率范围之内,则直接返回对应的。如果不在,则将概率空间的值减去值。这个算法简单,而且效率非常高。 经典的概率算法。 现在有数组:[10, 20, 30, 40] 。 假设对应中奖几率:特等奖10%,一等奖20%,二等奖30%,三等奖40%,总共100%。 算法开始时,从数组中选出一个值$value,再从...
摘要:演示下载地址效果图三个金蛋一把锤子及中奖结果代码如下锤子当鼠标滑向金蛋时,锤子会仅靠金蛋右上方,通过来控制位置。当挥动锤子砸向金蛋前,我们先把金蛋中的数字编号隐藏起来。最后,我们向后台发送一个请求,后台程序会处理奖项分配并把中奖结果返回。 演示下载地址:http://www.erdangjiade.com/js...效果图:showImg(https://segmentfault.co...
摘要:演示下载地址效果图三个金蛋一把锤子及中奖结果代码如下锤子当鼠标滑向金蛋时,锤子会仅靠金蛋右上方,通过来控制位置。当挥动锤子砸向金蛋前,我们先把金蛋中的数字编号隐藏起来。最后,我们向后台发送一个请求,后台程序会处理奖项分配并把中奖结果返回。 演示下载地址:http://www.erdangjiade.com/js...效果图:showImg(https://segmentfault.co...
摘要:演示下载地址效果图三个金蛋一把锤子及中奖结果代码如下锤子当鼠标滑向金蛋时,锤子会仅靠金蛋右上方,通过来控制位置。当挥动锤子砸向金蛋前,我们先把金蛋中的数字编号隐藏起来。最后,我们向后台发送一个请求,后台程序会处理奖项分配并把中奖结果返回。 演示下载地址:http://www.erdangjiade.com/js...效果图:showImg(https://segmentfault.co...
阅读 1825·2021-11-11 16:55
阅读 1452·2019-08-30 15:54
阅读 768·2019-08-29 15:34
阅读 2251·2019-08-29 13:11
阅读 2908·2019-08-26 13:28
阅读 1877·2019-08-26 10:49
阅读 991·2019-08-26 10:40
阅读 2551·2019-08-23 18:21