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中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
Jan 16 PHP
PHP编程函数安全篇
Jan 08 PHP
PHPUnit安装及使用示例
Oct 29 PHP
PHP中变量引用与变量销毁机制分析
Nov 15 PHP
Sublime里直接运行PHP配置方法
Nov 28 PHP
php中关于socket的系列函数总结
May 18 PHP
PHP设置头信息及取得返回头信息的方法
Jan 25 PHP
PHP常见数组函数用法小结
Mar 21 PHP
PHP 数组遍历foreach语法结构及实例
Jun 13 PHP
Thinkphp开发--集成极光推送
Sep 15 PHP
在PHP中输出JS语句以及乱码问题的解决方案
Feb 13 PHP
PHP实现简单注册登录系统
Dec 28 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下使用iconv需要注意的问题
2010/11/20 PHP
PHP入门经历和学习过程分享
2014/04/11 PHP
php自定义加密与解密程序实例
2014/12/31 PHP
PHP编写RESTful接口的方法
2016/02/21 PHP
有关javascript的性能优化 (repaint和reflow)
2013/04/12 Javascript
Iframe实现跨浏览器自适应高度解决方法
2014/09/02 Javascript
js使用心得分享
2015/01/13 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形网络(1)
2015/11/30 Javascript
js实现新年倒计时效果
2015/12/10 Javascript
jQuery 生成svg矢量二维码
2016/08/09 Javascript
js判断手机号是否正确并返回的实现代码
2017/01/17 Javascript
完美解决mui框架off-canvas侧滑超出部分隐藏无法滚动的问题
2018/01/25 Javascript
解析Json字符串的三种方法日常常用
2018/05/02 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
2018/11/18 Javascript
JavaScript创建防篡改对象的方法分析
2018/12/30 Javascript
ES6实现图片切换特效代码
2020/01/14 Javascript
vue倒计时刷新页面不会从头开始的解决方法
2020/03/03 Javascript
Vue两种组件类型:递归组件和动态组件的用法
2020/08/06 Javascript
[02:59]2014DOTA2西雅图国际邀请赛 圆满落幕中国夺冠
2014/07/23 DOTA
Python中实现字符串类型与字典类型相互转换的方法
2014/08/18 Python
Python实现在Linux系统下更改当前进程运行用户
2015/02/04 Python
python flask实现分页效果
2017/06/27 Python
python地震数据可视化详解
2019/06/18 Python
Python的缺点和劣势分析
2019/11/19 Python
pytorch nn.Conv2d()中的padding以及输出大小方式
2020/01/10 Python
基于python获取本地时间并转换时间戳和日期格式
2020/10/27 Python
如何通过安装HomeBrew来安装Python3
2020/12/23 Python
手机配件第一品牌:ZAGG
2017/05/28 全球购物
梅西百货澳大利亚:Macy’s Australia
2017/07/26 全球购物
英国游戏机和游戏购物网站:365games.co.uk
2018/06/18 全球购物
上海世博会口号
2014/06/19 职场文书
医学生求职信
2014/07/01 职场文书
项目工作说明书
2014/07/29 职场文书
党委班子纠正“四风”问题整改措施
2014/10/28 职场文书
2014年技术部工作总结
2014/12/12 职场文书
apache ftpserver搭建ftp服务器
2022/05/20 Servers