博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php抽奖概率算法
阅读量:6922 次
发布时间:2019-06-27

本文共 1423 字,大约阅读时间需要 4 分钟。

方法一:
function get_rand($proArr) {   $result = array();  foreach ($proArr as $key => $val) {     $arr[$key] = $val['v'];   }   // 概率数组的总概率   $proSum = array_sum($arr);   asort($arr);  // 概率数组循环   foreach ($arr as $k => $v) {     $randNum = mt_rand(1, $proSum);     if ($randNum <= $v) {       $result = $proArr[$k];       break;     } else {       $proSum -= $v;     }   }   return $result; }$arr = array(   array('id'=>1,'name'=>'特等奖','v'=>1),  array('id'=>2,'name'=>'一等奖','v'=>5),  array('id'=>3,'name'=>'二等奖','v'=>10),  array('id'=>4,'name'=>'三等奖','v'=>12),  array('id'=>5,'name'=>'四等奖','v'=>22),  array('id'=>6,'name'=>'没中奖','v'=>50));var_dump(get_rand($arr));
 

  

方法二:
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;}$arr = array(   array('id'=>1,'name'=>'特等奖','v'=>1),  array('id'=>2,'name'=>'一等奖','v'=>5),  array('id'=>3,'name'=>'二等奖','v'=>10),  array('id'=>4,'name'=>'三等奖','v'=>12),  array('id'=>5,'name'=>'四等奖','v'=>22),  array('id'=>6,'name'=>'没中奖','v'=>50));foreach ($arr as $val) {    $item[$val['id']] = $val['v'];}var_dump(get_rand($item));
 

  

转载于:https://www.cnblogs.com/qhorse/p/9020484.html

你可能感兴趣的文章
Linux TCP/IP 协议栈的关键数据结构Socket Buffer(sk_buff )
查看>>
Can an OSSEC manager have more than 256 agents
查看>>
关于chroot的一些解释
查看>>
让nginx 支持path_info
查看>>
python中的浅拷贝和深拷贝
查看>>
从软件的价值体系开始向技术的反向分析
查看>>
微软与哲学的距离
查看>>
mac配置redis单节点环境并启动服务
查看>>
ubuntu-vim
查看>>
热点推荐:秒杀系统架构分析与实战
查看>>
RAID5+LVM
查看>>
压缩与打包
查看>>
查询公司服务器类型
查看>>
我的友情链接
查看>>
(一)hadoop系列之__XP环境下搭建linux虚拟机
查看>>
我的友情链接
查看>>
LAMP+LVS+KEEPALIVED(五)
查看>>
uboot的作用和启动方式
查看>>
1.2关系数据库
查看>>
SpringCloud
查看>>