首页 > 学院 > 逻辑算法 > 正文

PHP 与 JS 中奖概率的算法

2020-03-22 19:50:01
字体:
来源:转载
供稿:网友
这篇文章主要介绍了关于PHP 与 JS 中奖概率的算法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

经典的概率算法。

现在有数组:[10, 20, 30, 40] 。

假设对应中奖几率:特等奖10%,一等奖20%,二等奖30%,三等奖40%,总共100%。

算法开始时,从数组中选出一个值$html' target='_blank'>value,再从1-100概率空间内随机选出一个数$rand。

比较$value和$rand,如果$rand在$value概率范围之内,则直接返回$value对应的key

如果不在,则将概率空间的值减去$value值。

在本例中,第一次判断之后,就是减去10,也就是说第二次是在1-90这个范围内筛选的。

这样筛选到最后,总会有一个数满足要求。

就相当于去一个箱子里摸东西,

第一个不是,第二个不是,第三个还不是,那最后一个一定是。

这个算法简单,而且效率非常高。

PHP实现
 ?php function getRand($arr) $result =  //概率数组的总概率精度 $sum = array_sum($arr); //概率数组循环 foreach ($arr as $key = $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实现
 script  function getRand(arr) { var result = 0; var sum = arr.reduce(function(a, b) { return a + b; for (index in arr) { rand = Math.round(Math.random() * (sum - 1) + 1); if (rand = arr[index]) { return index; } else { sum -= arr[index]; return result; // 使用示例,输出2的概率最大 var a = [10, 20, 30, 40]; document.write( br / Javascript: + getRand(a)); /script 使用范例: // 使用示例,输出3的概率最大 var a = [10, 20, 30, 40]; document.write( br / Javascript: + getRand(a));

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP !

相关推荐:

PHP快速生成现代化form表单的方法

php简单使用shmop函数创建共享内存减少服务器负载

以上就是PHP 与 JS 中奖概率的算法的详细内容,PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表