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仿QQ验证码的实例分析
Jul 01 PHP
php配合jquery实现增删操作具体实例
Dec 12 PHP
linux实现php定时执行cron任务详解
Dec 24 PHP
分享一个Laravel好用的Cache宏
Mar 02 PHP
php实现模拟登陆方正教务系统抓取课表
May 19 PHP
PHP版本常用的排序算法汇总
Dec 20 PHP
php使用ffmpeg获取视频信息并截图的实现方法
May 03 PHP
PHP开发制作一个简单的活动日程表Calendar
Jun 20 PHP
PHP+JQuery+Ajax实现分页方法详解
Aug 06 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
Aug 12 PHP
php中的buffer缓冲区用法分析
May 31 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面向对象全攻略 (十) final static const关键字的使用
2009/09/30 PHP
php中根据某年第几天计算出日期年月日的代码
2011/02/24 PHP
PHP swfupload图片上传的实例代码
2013/09/30 PHP
简单谈谈PHP vs Node.js
2015/07/17 PHP
Javascript的IE和Firefox兼容性汇编(zz)
2007/02/02 Javascript
javascript getElementsByName()的用法说明
2009/07/31 Javascript
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
2013/04/26 Javascript
javascript模块化是什么及其优缺点介绍
2013/09/02 Javascript
javascript函数重载解决方案分享
2014/02/19 Javascript
JS给Textarea文本框添加行号的方法
2015/08/20 Javascript
jQuery中常用的遍历函数用法实例总结
2015/09/01 Javascript
JS组件Bootstrap Table使用实例分享
2016/05/30 Javascript
JS获取一个未知DIV高度的方法
2016/08/09 Javascript
easyui中combotree循环获取父节点至根节点并输出路径实现方法
2016/11/10 Javascript
基于javascript实现按圆形排列DIV元素(一)
2016/12/02 Javascript
js遍历json的key和value的实例
2017/01/22 Javascript
webpack进阶——缓存与独立打包的用法
2017/08/02 Javascript
JS获取一个表单字段中多条数据并转化为json格式
2017/10/17 Javascript
浅析java线程中断的办法
2018/07/29 Javascript
微信小程序实现侧边栏分类
2019/10/21 Javascript
简单实现python爬虫功能
2015/12/31 Python
Python自动发邮件脚本
2017/03/31 Python
安装Python的教程-Windows
2017/07/22 Python
python实现狄克斯特拉算法
2019/01/17 Python
Python实现的在特定目录下导入模块功能分析
2019/02/11 Python
python对XML文件的操作实现代码
2020/03/27 Python
PIP和conda 更换国内安装源的方法步骤
2020/09/21 Python
Python使用windows设置定时执行脚本
2020/11/12 Python
CSS3轻松实现圆角效果
2017/11/09 HTML / CSS
HTML5打开本地app应用的方法
2016/03/31 HTML / CSS
Canvas高级路径操作之拖拽对象的实现
2019/08/05 HTML / CSS
电气自动化自荐信
2013/10/10 职场文书
大学社团计划书
2014/05/01 职场文书
企业管理标语
2014/06/10 职场文书
2015年统计员个人工作总结
2015/07/23 职场文书
几款流行的HTML5 UI框架比较(小结)
2021/04/08 HTML / CSS