php简单中奖算法(实例)


Posted in PHP onAugust 15, 2017

今天遇到这样的一个问题  封装一个 抽奖概率函数 思前想后去网上找点资料吧,而且不止一种方法 这种我感觉还是比较容易的 还是那句话 实现功能的思路不止一种 代码也不止一种。

function get_rand($proArr) {
   $result = '';
 
   //概率数组的总概率精度
   $proSum = array_sum($proArr);
 
   //概率数组循环
   foreach ($proArr as $key => $proCur) {
     $randNum = mt_rand(1, $proSum);
 if ($randNum <= $proCur) {
   $result = $key;
   break;
 } else {
   $proSum -= $proCur;
 }
}
unset ($proArr);
return $result;
}


$prize_arr = array(
'0' => array('id'=>1,'prize'=>'平板电脑','v'=>0.1),
'1' => array('id'=>2,'prize'=>'数码相机','v'=>5),
'2' => array('id'=>3,'prize'=>'音箱设备','v'=>10),
'3' => array('id'=>4,'prize'=>'4G优盘','v'=>12),
'4' => array('id'=>5,'prize'=>'10Q币','v'=>22),
'5' => array('id'=>6,'prize'=>'下次没准就能中哦','v'=>50),
);


foreach ($prize_arr as $key => $val) {
$arr[$val['id']] = $val['v'];
}
$rid = get_rand($arr); //根据概率获取奖项id
$res['yes'] = $prize_arr[$rid-1]['prize']; //中奖项
unset($prize_arr[$rid-1]); //将中奖项从数组中剔除,剩下未中奖项
shuffle($prize_arr); //打乱数组顺序
for($i=0;$i<count($prize_arr);$i++){
$pr[] = $prize_arr[$i]['prize'];
}
$res['no'] = $pr;
echo json_encode($res,JSON_UNESCAPED_UNICODE);

以上这篇php简单中奖算法(实例)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
福利彩票幸运号码自动生成器
Oct 09 PHP
php中的PHP_EOL换行符详细解析
Oct 26 PHP
浅谈php安全性需要注意的几点事项
Jul 17 PHP
php异步多线程swoole用法实例
Nov 14 PHP
ecshop实现smtp发送邮件
Feb 03 PHP
php魔术函数__call()用法实例分析
Feb 13 PHP
PHP的Yii框架中YiiBase入口类的扩展写法示例
Mar 17 PHP
thinkphp3.x中cookie方法的用法分析
May 19 PHP
如何正确配置Nginx + PHP
Jul 15 PHP
php中preg_replace_callback函数简单用法示例
Jul 21 PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
Aug 17 PHP
PHP绕过open_basedir限制操作文件的方法
Jun 10 PHP
PHP实现的随机红包算法示例
Aug 14 #PHP
详解PHP中的 input属性(隐藏 只读 限制)
Aug 14 #PHP
IOS 开发之NSDictionary转换成JSON字符串
Aug 14 #PHP
PHP+AjaxForm异步带进度条上传文件实例代码
Aug 14 #PHP
利用laravel搭建一个迷你博客实战教程
Aug 13 #PHP
利用laravel+ajax实现文件上传功能方法示例
Aug 13 #PHP
Laravel5.5新特性之友好报错以及展示详解
Aug 13 #PHP
You might like
模板引擎Smarty深入浅出介绍
2006/12/06 PHP
Chrome Web App开发小结
2014/09/04 PHP
Web程序工作原理详解
2014/12/25 PHP
对laravel in 查询的使用方法详解
2019/10/09 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
javascript getElementsByClassName函数
2010/04/01 Javascript
浅析JS刷新框架中的其他页面 &amp;&amp; JS刷新窗口方法汇总
2013/07/08 Javascript
Jquery插件实现点击获取验证码后60秒内禁止重新获取
2015/03/13 Javascript
JS建造者模式基本用法实例分析
2015/06/30 Javascript
JavaScript中innerHTML,innerText,outerHTML的用法及区别
2015/09/01 Javascript
AngularJS 依赖注入详解和简单实例
2016/07/28 Javascript
基于JS实现checkbox全选功能实例代码
2016/10/31 Javascript
浅谈使用splice函数对数组中的元素进行删除时的注意事项
2016/12/04 Javascript
vue中用H5实现文件上传的方法实例代码
2017/05/27 Javascript
微信小程序 开发MAP(地图)实例详解
2017/06/27 Javascript
vue.js开发实现全局调用的MessageBox组件实例代码
2017/11/22 Javascript
解决nodejs的npm命令无反应的问题
2018/05/17 NodeJs
JS拖拽排序插件Sortable.js用法实例分析
2019/02/20 Javascript
浅谈Javascript中的对象和继承
2019/04/19 Javascript
简单了解微信小程序的目录结构
2019/07/01 Javascript
vue 实现click同时传入事件对象和自定义参数
2021/01/29 Vue.js
[56:42]完美世界DOTA2联赛循环赛 Matador vs Forest 第二场 11.06
2020/11/06 DOTA
详谈python http长连接客户端
2017/06/12 Python
python实现用户答题功能
2018/01/17 Python
python实现词法分析器
2019/01/31 Python
Python3.5集合及其常见运算实例详解
2019/05/01 Python
聊聊python里如何用Borg pattern实现的单例模式
2019/06/06 Python
python用Tkinter做自己的中文代码编辑器
2020/09/07 Python
Python+OpenCV图像处理——实现直线检测
2020/10/23 Python
你的创业计划书怎样才能打动风投
2014/02/06 职场文书
产品质量承诺书
2014/03/27 职场文书
小学公民道德宣传日活动总结
2015/03/23 职场文书
房地产财务经理岗位职责
2015/04/08 职场文书
《夸父追日》教学反思
2016/02/20 职场文书
MySQL系列之六 用户与授权
2021/07/02 MySQL
以MySQL5.7为例了解一下执行计划
2022/04/13 MySQL