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连接SQLSERVER 注意事项(附dll文件下载)
Jun 28 PHP
比较简单的百度网盘文件直链PHP代码
Mar 24 PHP
有关于PHP中常见数据类型的汇总分享
Jan 06 PHP
php利用腾讯ip分享计划获取地理位置示例分享
Jan 20 PHP
PHP调用Linux命令权限不足问题解决方法
Feb 07 PHP
PHP创建word文档的方法(平台无关)
Mar 29 PHP
php 无限分类 树形数据格式化代码
Oct 11 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
Nov 13 PHP
Laravel 批量更新多条数据的示例
Nov 27 PHP
YII分模块加载路由的实现方法
Oct 01 PHP
PHP 获取客户端 IP 地址的方法实例代码
Nov 11 PHP
laravel实现上传图片,并且制作缩略图,按照日期存放的代码
Oct 16 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 Memcached + APC + 文件缓存封装实现代码
2010/03/11 PHP
php旋转图片90度的方法
2013/11/07 PHP
php的ZipArchive类用法实例
2014/10/20 PHP
PHP Socket网络操作类定义与用法示例
2017/08/30 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
2019/05/21 PHP
jQuery bind事件使用详解
2011/05/05 Javascript
jQuery控制输入框只能输入数值的小例子
2013/03/20 Javascript
JS实现随机数生成算法示例代码
2013/08/08 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
2013/12/28 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
2015/03/13 Javascript
javascript中createElement的两种创建方式
2015/05/14 Javascript
javascript中sort() 方法使用详解
2015/08/30 Javascript
JS显示日历和天气的方法
2016/03/01 Javascript
Query常用DIV操作获取和设置长度宽度的实现方法
2016/09/19 Javascript
vue实现全选和反选功能
2017/08/31 Javascript
基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍
2018/08/24 Javascript
浅谈VUE单页应用首屏加载速度优化方案
2018/08/28 Javascript
Python3.6日志Logging模块简单用法示例
2018/06/14 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
2019/04/11 Python
Python之修改图片像素值的方法
2019/07/03 Python
Django中多种重定向方法使用详解
2019/07/17 Python
python实现车牌识别的示例代码
2019/08/05 Python
python使用sessions模拟登录淘宝的方式
2019/08/16 Python
如何更改 pandas dataframe 中两列的位置
2019/12/27 Python
python实现人机五子棋
2020/03/25 Python
浅谈django channels 路由误导
2020/05/28 Python
Python sorted对list和dict排序
2020/06/09 Python
在Pytorch中使用Mask R-CNN进行实例分割操作
2020/06/24 Python
css3 线性渐变和径向渐变示例附图
2014/04/08 HTML / CSS
实习生体会的自我评价范文
2013/11/28 职场文书
总经理任命书范本
2014/06/05 职场文书
关于运动会的口号
2014/06/07 职场文书
2014年营业员工作总结
2014/11/18 职场文书
结婚司仪主持词
2015/06/29 职场文书
2016年党员读书月活动总结
2016/04/06 职场文书
Moment的feature导致线上bug解决分析
2022/09/23 Javascript