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 相关文章推荐
PHP自动生成月历代码
Oct 09 PHP
php pcntl_fork和pcntl_fork 的用法
Apr 13 PHP
PHP学习笔记之数组篇
Jun 28 PHP
PHP插入排序实现代码
Apr 04 PHP
PHP对表单提交特殊字符的过滤和处理方法汇总
Feb 18 PHP
培养自己的php编码规范
Sep 28 PHP
php+ajax实现无刷新的新闻留言系统
Dec 21 PHP
Symfony2学习笔记之系统路由详解
Mar 17 PHP
浅谈PHP检查数组中是否存在某个值 in_array 函数
Jun 13 PHP
PHP常见过waf webshell以及最简单的检测方法
May 21 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
Nov 14 PHP
PHP解决高并发问题
Apr 01 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
《魔兽世界》惊魂幻象将获得调整
2020/03/08 其他游戏
destoon实现调用当前栏目分类及子分类和三级分类的方法
2014/08/21 PHP
php+mysql删除指定编号员工信息的方法
2015/01/14 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
2015/12/17 PHP
php强制下载文件函数
2016/08/24 PHP
php使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
经常用的图片在容器中的水平垂直居中实例
2007/06/10 Javascript
JavaScript库 开发规则
2009/01/31 Javascript
Jquery倒计时源码分享
2014/05/16 Javascript
jQuery实现返回顶部功能适合不支持js的浏览器
2014/08/19 Javascript
JavaScript实现在页面间传值的方法
2015/04/07 Javascript
基于javascript实现九宫格大转盘效果
2020/05/28 Javascript
jQuery悬停文字提示框插件jquery.tooltipster.js用法示例【附demo源码下载】
2016/07/19 Javascript
深入浅出 jQuery中的事件机制
2016/08/23 Javascript
Bootstrap基本组件学习笔记之分页(12)
2016/12/08 Javascript
layui table 参数设置方法
2018/08/14 Javascript
微信小程序购物车、父子组件传值及calc的注意事项总结
2018/11/14 Javascript
基于js Canvas实现二次贝塞尔曲线
2018/12/25 Javascript
Vuerouter的beforeEach与afterEach钩子函数的区别
2018/12/26 Javascript
vue路由中前进后退的一些事儿
2019/05/18 Javascript
[52:52]完美世界DOTA2联赛PWL S3 LBZS vs access 第一场 12.10
2020/12/13 DOTA
[03:15]DOTA2-DPC中国联赛1月22日Recap集锦
2021/03/11 DOTA
Python socket.error: [Errno 98] Address already in use的原因和解决方法
2014/08/25 Python
Python黑魔法@property装饰器的使用技巧解析
2016/06/16 Python
python调试神器PySnooper的使用
2019/07/03 Python
python pip安装包出现:Failed building wheel for xxx错误的解决
2019/12/25 Python
Bootstrap 学习分享
2012/11/12 HTML / CSS
狗狗玩具、零食和咀嚼物的月度送货服务:Super Chewer
2018/08/22 全球购物
咖啡馆创业计划书
2014/01/26 职场文书
医学生求职信
2014/07/01 职场文书
商场促销活动总结
2014/07/10 职场文书
整改落实自查报告
2014/11/05 职场文书
优秀党员先进材料
2014/12/18 职场文书
会议主持人开场白台词
2015/05/28 职场文书
Python中glob库实现文件名的匹配
2021/06/18 Python
Nginx代理Redis哨兵主从配置的实现
2022/07/15 Servers