很简单的一个控制概率的骰子小函数哈,直接上代码
/** * * 配置某点数权重骰子 * @param $prize int 点数 * @param $rate int 权重(1~100) * @return int */ function shai($prize=1,$rate=1){ $other_rate = intval((100-$rate)/5); $yu = 100 - $rate - $other_rate*5; $weights = []; for ($i=1;$i<7;$i++){ if($i == $prize){ $shai[$i] = $rate; }else{ if($yu > 0){ $shai[$i] = $other_rate + 1; $yu--; }else{ $shai[$i] = $other_rate; } } $weightCounter = 0; while ($weightCounter++ < ($shai[$i] ?? 0)) { $weights[] = $i; } } shuffle($weights);//打乱数组返回第一个元素 return $weights[0]; }
echo shai(1,98);
执行结果
echo shai(3,1);
执行结果
什么地方用这个?
例如那种摇骰子走步类的游戏,每次摇骰子的时候,你可以把中大奖的点数配置一个概率,这样就可以控制中奖概率咯!
又或者其他类摇骰子的游戏,理论上都可以用上 ~
其他地方的使用自己发散想象吧
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于