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计算两个日期时间差(返回年、月、日)
Jun 19 PHP
隐性调用php程序的方法
Jun 13 PHP
PHP结合Jquery和ajax实现瀑布流特效
Jan 07 PHP
PHP实现通过URL提取根域名
Mar 31 PHP
Joomla调用系统自带编辑器的实现方法
May 05 PHP
CI框架AR操作(数组形式)实现插入多条sql数据的方法
May 18 PHP
PHP Callable强制指定回调类型的方法
Aug 30 PHP
PHP制作登录异常ip检测功能的实例代码
Nov 16 PHP
CentOS 上搭建 PHP7 开发测试环境
Feb 26 PHP
解决Yii2邮件发送结果返回成功,但接收不到邮件的问题
May 23 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
Feb 11 PHP
PHP实现的简单组词算法示例
Apr 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
WordPress判断用户是否登录的代码
2011/03/17 PHP
PHP计数器的实现代码
2013/06/08 PHP
PHP中模糊查询并关联三个select框
2017/06/19 PHP
php文件操作之文件写入字符串、数组的方法分析
2019/04/15 PHP
js添加table的行和列 具体实现方法
2013/07/22 Javascript
JS判定是否原生方法
2013/07/22 Javascript
JS获取当前日期和时间的简单实例
2013/11/19 Javascript
Jquery使用Firefox FireBug插件调试Ajax步骤讲解
2013/12/02 Javascript
jquery实现公告翻滚效果
2015/02/27 Javascript
JavaScript 数组some()和filter()的用法及区别
2016/05/20 Javascript
Vuejs中的watch实例详解(监听者)
2020/01/05 Javascript
jQuery 选择器用法实例分析【prev + next】
2020/05/22 jQuery
详细探究Python中的字典容器
2015/04/14 Python
Python读取一个目录下所有目录和文件的方法
2016/07/15 Python
判断网页编码的方法python版
2016/08/12 Python
Python paramiko模块的使用示例
2018/04/11 Python
pandas DataFrame数据转为list的方法
2018/04/11 Python
Python 从相对路径下import的方法
2018/12/04 Python
用python代码将tiff图片存储到jpg的方法
2018/12/04 Python
Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】
2019/06/18 Python
django-rest-framework解析请求参数过程详解
2019/07/18 Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
2020/02/27 Python
关于Python字符串显示u...的解决方式
2020/03/06 Python
Python3.7 读取音频根据文件名生成脚本的代码
2020/04/07 Python
idea2020手动安装python插件的实现方法
2020/07/17 Python
纯CSS绘制漂亮的圆形图案效果
2014/05/07 HTML / CSS
CSS3实现多背景展示效果通过CSS3定位多张背景
2014/08/10 HTML / CSS
经典大学生求职信范文
2014/01/06 职场文书
施工安全生产承诺书
2014/05/23 职场文书
党员争先创优承诺书
2015/01/20 职场文书
2015年法制宣传月活动总结
2015/03/26 职场文书
2015年保管员工作总结
2015/04/30 职场文书
公司行政管理制度范本
2015/08/05 职场文书
感谢信
2019/04/11 职场文书
golang 实现两个结构体复制字段
2021/04/28 Golang
浅谈TypeScript 索引签名的理解
2021/10/16 Javascript