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

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

public function prize_rand($prize_list){        //第一,算出所有的剩余奖品库存        $turntable_total_stock = 0;        foreach ($prize_list['prize_list'] as $key => $prize) {            $turntable_total_stock += $prize['rest_stock'];        }        //第二,算出每一类奖品精确的中奖概率:该活动的总中奖率/总库存*该类奖品的库存        //第三,算出每一类奖品实际的中奖概率和总中奖概率:向上取整(精确的中奖概率*基数)        foreach ($prize_list['prize_list'] as $key => $prize) {            $rest_stock = $prize['rest_stock'];            if ($rest_stock > 0) {                $probability = $chance * ($rest_stock / $turntable_total_stock) / 100;                if ($probability > 0) {                    $num = $probability * $total;//概率乘以基数,提高精度                    $fact_total += ceil($num);                    $tmp[$key] = ceil($num);                }            }        }        //第四,获取一到中奖概率基数之间的随机数(1,100)之间,取到90,大于实际的总中奖概率81,未中奖,否则继续抽奖        $awarded_num = mt_rand(1, $total);        if ($awarded_num > $fact_total) {            return $result;        }        //第五,遍历每一类奖品的实际中奖概率,取一到总得实际的中奖概率的随机数(1,81),随机数大于该类奖品的中奖概率,说明未能中该类奖品,总得实际中奖概率-该类奖品的中奖概率,循环到下一类奖品,同上,        foreach ($tmp as $k => $proCur) {            $randNum = mt_rand(1, $fact_total);            if ($randNum <= $proCur) {                if ($re['rest_stock'] > 0) {                    //该奖品有剩余库存                    $result = $re;                    break;                }            }            $fact_total -= $proCur;        }        return $result;    }

 

转载于:https://www.cnblogs.com/xiaobiaomei/p/8668529.html

你可能感兴趣的文章
流程控制 Day06
查看>>
Linux下安装Tomcat
查看>>
windows live writer 2012 0x80070643
查看>>
tomcat 和MySQL的安装
查看>>
git常用操作
查看>>
京东SSO单点登陆实现分析
查看>>
u-boot启动第一阶段
查看>>
MySQL批量SQL插入性能优化
查看>>
定义列属性:null,default,PK,auto_increment
查看>>
用户画像展示
查看>>
C#中StreamReader读取中文出现乱码
查看>>
使用BufferedReader的时候出现的问题
查看>>
批处理文件中的路径问题
查看>>
hibernate出现No row with the given identifier exists问题
查看>>
为什么wait()和notify()属于Object类
查看>>
配置NRPE的通讯
查看>>
匹配两个空格之间的字符。。。
查看>>
CSS 文字溢出 变成省略号 ...
查看>>
Spring事务
查看>>
java编程基础(三)流程控制语句
查看>>