各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案

Str Tom,为分享PHP技术和解决方案,贡献一份自己的力量!
收藏本站(不迷路),每天更新好文章!
当前位置:首页 > CMS教程 > PHP

PHP与JS中奖概率的算法

管理员 2023-09-05
PHP
126

PHP与JS中奖概率的算法

内容导读

收集整理的这篇技术教程文章主要介绍了PHP与JS中奖概率的算法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1714字,纯文字阅读大概需要3分钟

内容图文

这篇文章主要介绍了关于PHP 与 JS 中奖概率的算法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

经典的概率算法。

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

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

算法开始时,从数组中选出一个值$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 中奖概率的算法的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的PHP与JS中奖概率的算法全部内容,希望文章能够帮你解决PHP与JS中奖概率的算法所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

扫码关注

qrcode

QQ交谈

回顶部