扫码关注官方订阅号
有这么一个需求,每次请求一次按照指定概率进行开奖,比如:
A第一次请求,中奖概率为65%,第二次请求,中奖概率为7% B第一次请求,中奖概率为30%,第二次请求,中奖概率为1%
A第一次请求,中奖概率为65%,第二次请求,中奖概率为7%
B第一次请求,中奖概率为30%,第二次请求,中奖概率为1%
我要如何得到A第一次请求中奖没中奖呢?
欢迎选择我的课程,让我们一起见证您的进步~~
直接mt_rand(1, 100) <= $prob不就得了?
mt_rand(1, 100) <= $prob
我自己想到一个方法,要没人回答我就采纳自己了,比如上面栗子,A第一次中间率65%;那么我就这样
/** * 抽奖函数 * * $i:传中奖概率过来,也就是百分比中的分子 * return 1|0 */ function choujiang($i) { $group = array_fill(0, $i, 1) + array_fill(0, 100, 0); $num = mt_rand(0, 99); shuffle($group); return $group[$num]; } echo choujiang(65) ? '中奖了' : '没中奖';
我提供个答案:
function is_get_prize($data){ $rand_value = 0; $rand_value = mt_rand(1, 100); return($rand_value >= (100-$data)) ? (true) : false; } $ret = is_get_prize(65); if(true === $ret){ echo "ok"; }else{ echo "bad"; }
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
直接
mt_rand(1, 100) <= $prob不就得了?我自己想到一个方法,要没人回答我就采纳自己了,比如上面栗子,A第一次中间率65%;那么我就这样
我提供个答案: