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小技巧搜集,每个PHPer都来露一手
Jan 02 PHP
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
Oct 11 PHP
PHP 文件系统详解
Sep 13 PHP
php-cli简介(不会Shell语言一样用Shell)
Jun 03 PHP
360通用php防护代码(使用操作详解)
Jun 18 PHP
session在php5.3中的变化 session_is_registered() is deprecated in
Nov 12 PHP
ini_set的用法介绍
Jan 07 PHP
使用php转义输出HTML到JavaScript
Mar 27 PHP
PHP+Apache+Mysql环境搭建教程
Aug 01 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
May 24 PHP
Laravel框架验证码类用法实例分析
Sep 11 PHP
PHP全局使用Laravel辅助函数dd
Dec 26 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一些错误处理的方法与技巧总结
2013/08/10 PHP
php静态文件返回304技巧分享
2015/01/06 PHP
PHP实现伪静态方法汇总
2016/01/13 PHP
javascript cookie解码函数(兼容ff)
2008/03/17 Javascript
jquery插件 autoComboBox 下拉框
2010/12/22 Javascript
快速解决FusionCharts联动的中文乱码问题
2013/12/04 Javascript
Javascript连接多个数组不用concat来解决
2014/03/24 Javascript
JavaScript验证电子邮箱的函数
2014/08/22 Javascript
kindeditor修复会替换script内容的问题
2015/04/03 Javascript
js实现div层缓慢收缩与展开的方法
2015/05/11 Javascript
jquery实现触发时更新下拉列表内容的方法
2015/12/02 Javascript
Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值
2016/03/23 Javascript
jquery+ajax实现直接提交表单实例分析
2016/06/17 Javascript
axios基本入门用法教程
2017/03/25 Javascript
JavaScript简介_动力节点Java学院整理
2017/06/26 Javascript
AngularJS实现select的ng-options功能示例
2017/07/12 Javascript
jquery实现倒计时小应用
2017/09/19 jQuery
详解Vue2 SSR 缓存 Api 数据
2017/11/20 Javascript
bootstrap fileinput插件实现预览上传照片功能
2018/01/23 Javascript
ejsExcel模板在Vue.js项目中的实际运用
2018/01/27 Javascript
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
基于Linux系统中python matplotlib画图的中文显示问题的解决方法
2017/06/15 Python
Python内置模块hashlib、hmac与uuid用法分析
2018/02/12 Python
Python中垃圾回收和del语句详解
2018/11/15 Python
详解Python正则表达式re模块
2019/03/19 Python
python中时间模块的基本使用教程
2019/05/14 Python
pygame实现贪吃蛇游戏(上)
2019/10/29 Python
python 装饰器功能与用法案例详解
2020/03/06 Python
如何查看Django ORM执行的SQL语句的实现
2020/04/20 Python
python爬虫工具例举说明
2020/11/30 Python
会计学应届毕业生推荐信
2013/11/04 职场文书
企业车辆管理制度
2014/01/24 职场文书
公司总经理岗位职责
2014/03/15 职场文书
行为规范主题班会
2015/08/13 职场文书
入团申请书格式
2019/06/20 职场文书
go结构体嵌套的切片数组操作
2021/04/28 Golang