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 相关文章推荐
PHP在Web开发领域的优势
Oct 09 PHP
PHP个人网站架设连环讲(一)
Oct 09 PHP
php下的权限算法的实现
Apr 28 PHP
实用函数2
Nov 08 PHP
php启用zlib压缩文件的配置方法
Jun 12 PHP
PHP积分兑换接口实例
Feb 09 PHP
php字符串操作针对负值的判断分析
Jul 28 PHP
PHP编辑器PhpStrom运行缓慢问题
Feb 21 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
Jul 13 PHP
PHP实现链式操作的三种方法详解
Nov 16 PHP
thinkphp5+layui实现的分页样式示例
Oct 08 PHP
基于PHP实现邮箱验证激活过程详解
Oct 28 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
S900/ ETON E1-XM 收音机
2021/03/02 无线电
ip签名探针
2006/10/09 PHP
PHP设计聊天室步步通
2006/10/09 PHP
ThinkPHP关于session的操作方法汇总
2014/07/18 PHP
基于Laravel 多个中间件的执行顺序详解
2019/10/21 PHP
疯狂Jquery第一天(Jquery学习笔记)
2012/05/11 Javascript
解析使用js判断只能输入数字、字母等验证的方法(总结)
2013/05/14 Javascript
jquery showModelDialog的使用方法示例详解
2013/11/19 Javascript
超链接的禁用属性Disabled使用示例
2014/07/31 Javascript
jQuery extend()详解及简单实例
2017/05/06 jQuery
js构建二叉树进行数值数组的去重与优化详解
2018/03/26 Javascript
详解webpack运行Babel教程
2018/06/13 Javascript
express 项目分层实践详解
2018/12/10 Javascript
mpvue+vant app搭建微信小程序的方法步骤
2019/02/11 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
2019/10/10 jQuery
解决Layui 表格自适应高度的问题
2019/11/15 Javascript
Python 的 with 语句详解
2014/06/13 Python
Python中MYSQLdb出现乱码的解决方法
2014/10/11 Python
Python制作钉钉加密/解密工具
2016/12/07 Python
Python OpenCV 使用滑动条来调整函数参数的方法
2019/07/08 Python
在pycharm中关掉ipython console/PyDev操作
2020/06/09 Python
Python with语句用法原理详解
2020/07/03 Python
美国家喻户晓的保健品品牌:Vitamin World(维他命世界)
2016/08/19 全球购物
喜诗官方在线巧克力店:See’s Candies
2017/01/01 全球购物
Sperry澳大利亚官网:源自美国帆船鞋创始品牌
2019/07/29 全球购物
初级软件工程师面试题 Junior Software Engineer Interview
2015/02/15 面试题
Linux管理员面试经常问道的相关命令
2014/12/12 面试题
什么是GWT的Entry Point
2013/08/16 面试题
办公自动化专业大学生职业规划书
2014/03/06 职场文书
信用卡逾期证明示例
2014/09/13 职场文书
服务明星事迹材料
2014/12/29 职场文书
邹越演讲观后感
2015/06/15 职场文书
mybatis使用oracle进行添加数据的方法
2021/04/27 Oracle
Java Shutdown Hook场景使用及源码分析
2021/06/15 Java/Android
利用Python读取微信朋友圈的多种方法总结
2021/08/23 Python
Kubernetes中Deployment的升级与回滚
2022/04/01 Servers