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读取html并截取字符串的简单代码
Nov 30 PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
Jan 07 PHP
判断、添加和删除WordPress置顶文章的相关PHP函数小结
Dec 10 PHP
PHP+swoole实现简单多人在线聊天群发
Jan 19 PHP
php redis实现文章发布系统(用户投票系统)
Mar 04 PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
Mar 08 PHP
自制PHP框架之设计模式
May 07 PHP
PHP调用其他文件中的类
Apr 02 PHP
PHP自动生成缩略图函数的源码示例
Mar 18 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
May 26 PHP
PHP var关键字相关原理及使用实例解析
Jul 11 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
PHPMailer安装方法及简单实例
2008/11/25 PHP
基于PHP Socket配置以及实例的详细介绍
2013/06/13 PHP
php数组查找函数in_array()、array_search()、array_key_exists()使用实例
2014/04/29 PHP
Yii2.0高级框架数据库增删改查的一些操作
2015/11/16 PHP
PHP+Ajax实现的检测用户名功能简单示例
2019/02/12 PHP
js left,right,mid函数
2008/06/10 Javascript
jquery键盘事件使用介绍
2011/11/01 Javascript
JS实现在页面随时自定义背景颜色的方法
2015/02/27 Javascript
jQuery选择器源码解读(八):addCombinator函数
2015/03/31 Javascript
深入浅析JavaScript的API设计原则
2016/06/14 Javascript
jQuery Easyui Tabs扩展根据自定义属性打开页签
2016/08/15 Javascript
微信公众号  提示:Unauthorized API function 问题解决方法
2016/12/05 Javascript
jQuery EasyUI 组件加上“清除”功能实例详解
2017/04/11 jQuery
jQuery实现鼠标滑过预览图片大图效果的方法
2017/04/26 jQuery
js实现图片上传预览原理分析
2017/07/13 Javascript
AngularJS 事件发布机制
2018/08/28 Javascript
Python读取Excel的方法实例分析
2015/07/11 Python
Python通过Pygame绘制移动的矩形实例代码
2018/01/03 Python
python matplotlib饼状图参数及用法解析
2019/11/04 Python
关于Python字符串显示u...的解决方式
2020/03/06 Python
Windows下Anaconda和PyCharm的安装与使用详解
2020/04/23 Python
python中通过pip安装库文件时出现“EnvironmentError: [WinError 5] 拒绝访问”的问题及解决方案
2020/08/11 Python
OSPREY LONDON官网:英国本土皮具品牌
2019/05/31 全球购物
Opodo意大利:欧洲市场上领先的在线旅行社
2019/10/24 全球购物
Unix里面如何在后台运行程序
2016/10/14 面试题
企业业务员岗位职责
2014/03/14 职场文书
保安公司服务承诺书
2014/05/28 职场文书
食品质量与安全专业毕业生求职信
2014/08/11 职场文书
继续教育个人总结
2015/03/03 职场文书
遗愿清单观后感
2015/06/09 职场文书
公司中层管理培训心得体会
2016/01/11 职场文书
导游经典开场白——导游词
2019/04/17 职场文书
导游词之镇江-金山寺
2019/10/14 职场文书
实体类或对象序列化时,忽略为空属性的操作
2021/06/30 Java/Android
JavaScript模拟实现网易云轮播效果
2022/04/04 Javascript
MongoDB数据库之添删改查
2022/04/26 MongoDB