php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法
2016-03-31 16:05
676 查看
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'=>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 $pr[] = $prize_arr[$i]['prize']; } $res['no'] = $pr; print_r($res);
相关文章推荐
- phpcms二次开发_创建功能模块
- php mvc 框架演示
- php mvc 框架演示
- php mvc 框架演示
- phpcms文件目录结构
- PHP操作FTP类 (上传、下载、移动、创建等)
- php获取本机真实IP地址实例代码
- laravel中的Contracts, ServiceContainer, ServiceProvider, Facades关系
- Php pdo链接access数据库并循环显示数据
- 【转】PHP的Trait 特性
- thinkPHP上传到服务器显示500错误
- 去除phpcms会员登录后头部登陆条的会员名称的括号
- PDO中获取结果集
- php发送邮箱简单教程
- php csrf防御
- ubuntu安装PHP5.6
- ThinkPHP3.2.3集成xheditor上传图片
- 详解PHP的Yii框架中自带的前端资源包的使用
- web、ftp上传区别
- Yii 表单验证规则---总结