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 相关文章推荐
example1.php
Oct 09 PHP
Zend Guard一些常见问题解答
Sep 11 PHP
Php Mssql操作简单封装支持存储过程
Dec 11 PHP
完美实现GIF动画缩略图的php代码
Jan 02 PHP
PHP数组操作汇总 php数组的使用技巧
Jul 17 PHP
PHP+jQuery 注册模块的改进(一):验证码存入SESSION
Oct 14 PHP
PHP实现采集中国天气网未来7天天气
Oct 15 PHP
通过php添加xml文档内容的方法
Jan 23 PHP
php超快高效率统计大文件行数
Jul 05 PHP
php实现的简易扫雷游戏实例
Jul 09 PHP
php+html5基于websocket实现聊天室的方法
Jul 17 PHP
php实现的AES加密类定义与用法示例
Jan 29 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
PHP脚本的10个技巧(2)
2006/10/09 PHP
PHP操作mysql函数详解,mysql和php交互函数
2011/05/19 PHP
PHP过滤黑名单关键字的方法
2014/12/01 PHP
php微信公众平台开发(一) 配置接口
2016/12/06 PHP
学习YUI.Ext 第二天
2007/03/10 Javascript
JQuery 1.4 中的Ajax问题
2010/01/23 Javascript
javascript 利用Image对象实现的埋点(某处的点击数)统计
2012/12/28 Javascript
js获取GridView中行数据的两种方法 分享
2013/07/13 Javascript
JSP中使用JavaScript动态插入删除输入框实现代码
2014/06/13 Javascript
快速掌握Node.js环境的安装与运行方法
2016/02/16 Javascript
jQuery+CSS3+Html5实现弹出层效果实例代码(附源码下载)
2016/05/16 Javascript
JavaScript之Vue.js【入门基础】
2016/12/06 Javascript
Angular2库初探
2017/03/01 Javascript
基于代数方程库Algebra.js解二元一次方程功能示例
2017/06/09 Javascript
angular.js + require.js构建模块化单页面应用的方法步骤
2017/07/19 Javascript
Angular中响应式表单的三种更新值方法详析
2017/08/22 Javascript
nodejs使用express获取get和post传值及session验证的方法
2017/11/09 NodeJs
三种Webpack打包方式(小结)
2018/09/19 Javascript
如何优雅的在一台vps(云主机)上面部署vue+mongodb+express项目
2019/01/20 Javascript
react 移动端实现列表左滑删除的示例代码
2019/07/04 Javascript
jQuery是用来干什么的 jquery其实就是一个js框架
2021/02/04 jQuery
[27:02]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第三场
2014/05/24 DOTA
Python时间戳与时间字符串互相转换实例代码
2013/11/28 Python
python列出目录下指定文件与子目录的方法
2015/07/03 Python
Python实现截屏的函数
2015/07/26 Python
简单了解Python下用于监视文件系统的pyinotify包
2015/11/13 Python
OpenCV 边缘检测
2019/07/10 Python
python实现对变位词的判断方法
2020/04/05 Python
eBay澳大利亚站:eBay.com.au
2018/02/02 全球购物
贝斯特韦斯特酒店集团官网:Best Western
2019/01/03 全球购物
《雨霖铃》教学反思
2014/02/22 职场文书
建筑公司员工自我鉴定
2014/04/08 职场文书
志愿者活动总结范文
2014/04/26 职场文书
2015年出纳年终工作总结
2015/05/14 职场文书
实验心得体会范文
2016/01/25 职场文书
python ConfigParser库的使用及遇到的坑
2022/02/12 Python