php 抽奖程序
2016-03-24 13:31
489 查看
/** * 全概率计算 * * @param array $p array('a'=>0.5,'b'=>0.2,'c'=>0.4) * @return string 返回上面数组的key */ function random($ps){ static $arr = array(); $key = md5(serialize($ps)); if (!isset($arr[$key])) { $max = array_sum($ps); foreach ($ps as $k=>$v) { $v = $v / $max * 10000; for ($i=0; $i<$v; $i++) $arr[$key][] = $k; } } return $arr[$key][mt_rand(0,count($arr[$key])-1)]; }
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; }
相关文章推荐
- Alluxio源码分析定位策略:指定主机策略SpecificHostPolicy
- PHP的错误机制总结
- Sphider + SCWS 打造完美PHP中文搜索引擎
- php new self()和new static()
- PHP - Traversable接口详解
- Zend Studio / Ecliplse插件EasyExplorer,打开资源文件所在的文件夹
- PHP错误机制知识汇总
- Windows 7如何建立一个FTP的快捷方式
- PHP底层的运行机制与原理
- php栈和队列
- YII2 模型概述
- mod_PHP&fastcgi
- Php导出excle文件
- php 文件上传失败
- php之逻辑判断
- php中curl、fsockopen的应用
- php 判断是否是ajax提交的方法
- win7 64bit下最新Apahe2.4.18+php7.0.2+MySQL5.7.10配置
- PHP7中php.ini、php-fpm和www.conf的配置
- Windows10搭建PHP7开发环境