PHP编程实现计算抽奖概率算法完整实例


Posted in PHP onAugust 09, 2017

本文实例讲述了PHP编程实现计算抽奖概率算法。分享给大家供大家参考,具体如下:

<?php
 //计算抽奖的概率
 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'=>2),
 '1' => array('id'=>2,'prize'=>'数码相机','v'=>5),
 '2' => array('id'=>3,'prize'=>'iPad','v'=>13),
 '3' => array('id'=>4,'prize'=>'LED显示器','v'=>15),
 '4' => array('id'=>5,'prize'=>'U盘','v'=>25),
 '5' => array('id'=>6,'prize'=>'键盘','v'=>30),
 '6' => array('id'=>7,'prize'=>'鼠标垫','v'=>10),
 );
 foreach ($prize_arr as $key => $val) {
 $arr[$val['id']] = $val['v'];
 }
 $rid = get_rand($arr);
 $res['yes'] = $prize_arr[$rid-1]['prize'];
 unset($prize_arr[$rid-1]);
 shuffle($prize_arr);
 $prize_arrcount = count($prize_arr);
 for($i=0;$i<$prize_arrcount;$i++){
 $pr[] = $prize_arr[$i]['prize'];
 }
 $res['no'] = $pr;
 //抽奖结果
 $ro = $res['yes'];
 print_r($ro);
?>

运行结果:

iPad
PHP 相关文章推荐
资料注册后发信小技巧
Oct 09 PHP
php获得文件扩展名三法
Nov 25 PHP
[原创]效率较高的php下读取文本文件的代码
Jul 02 PHP
php面向对象全攻略 (九)访问类型
Sep 30 PHP
PHP中数组合并的两种方法及区别介绍
Sep 14 PHP
PHP中使用hidef扩展代替define提高性能
Apr 09 PHP
php根据一个给定范围和步进生成数组的方法
Jun 19 PHP
PHP数组游标实现对数组的各种操作详解
Jan 26 PHP
PHP实现通过URL提取根域名
Mar 31 PHP
yii2使用ajax返回json的实现方法
May 14 PHP
PHP count_chars()函数讲解
Feb 14 PHP
laravel 5.5 关闭token的3种实现方式
Oct 24 PHP
PHP实现将标点符号正则替换为空格的方法
Aug 09 #PHP
php实现的redis缓存类定义与使用方法示例
Aug 09 #PHP
PHP编程实现脚本异步执行的方法
Aug 09 #PHP
PHP并发查询MySQL的实例代码
Aug 09 #PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
Aug 09 #PHP
PHP实现更改hosts文件的方法示例
Aug 08 #PHP
PHP编程实现阳历转换为阴历的方法实例
Aug 08 #PHP
You might like
神族 Protoss 历史背景
2020/03/14 星际争霸
PHP新手上路(七)
2006/10/09 PHP
php读取html并截取字符串的简单代码
2009/11/30 PHP
php smarty截取中文字符乱码问题?gb2312/utf-8
2011/11/07 PHP
PHP return语句另类用法不止是在函数中
2014/09/17 PHP
PHP使用flock实现文件加锁的方法
2015/07/01 PHP
javascript脚本调试方法小结
2008/11/24 Javascript
javascript 跨浏览器开发经验总结(五) js 事件
2010/05/19 Javascript
JavaScript中为元素加上name属性的方法
2011/05/09 Javascript
Json对象与Json字符串互转(4种转换方式)
2013/03/27 Javascript
利用jQuery实现可以编辑的表格
2014/05/26 Javascript
jquery插件splitScren实现页面分屏切换模板特效
2015/06/16 Javascript
基于jQuery实现的菜单切换效果
2015/10/16 Javascript
AngualrJS中的Directive制作一个菜单
2016/01/26 Javascript
JavaScript:Date类型全面解析
2016/05/19 Javascript
Web前端开发之水印、图片验证码
2016/11/27 Javascript
使用JavaScript触发过渡效果的方法
2017/01/19 Javascript
JavaScript定时器制作弹窗小广告
2017/02/05 Javascript
jQuery阻止移动端遮罩层后页面滚动
2017/03/15 Javascript
js装饰设计模式学习心得
2018/02/17 Javascript
vue eslint简要配置教程详解
2019/07/26 Javascript
利用layer实现表单完美验证的方法
2019/09/26 Javascript
Python写的一个简单DNS服务器实例
2014/06/04 Python
python的迭代器与生成器实例详解
2014/07/16 Python
Python抽象和自定义类定义与用法示例
2018/08/23 Python
python获取网络图片方法及整理过程详解
2019/12/20 Python
Python读取YAML文件过程详解
2019/12/30 Python
美国男女折扣服饰百货连锁店:Stein Mart
2017/05/02 全球购物
为什么需要版本控制
2016/10/28 面试题
雏鹰争章活动总结
2014/05/09 职场文书
优秀工会工作者事迹材料
2014/06/02 职场文书
社区志愿者活动总结
2014/06/26 职场文书
2014年学前班工作总结
2014/12/08 职场文书
药品销售员2015年终工作总结
2015/10/22 职场文书
JavaScript 语句之常用 for 循环详解
2021/03/29 Javascript
深入理解以DEBUG方式线程的底层运行原理
2021/06/21 Java/Android