很简单的一个控制概率的骰子小函数哈,直接上代码
/**
*
* 配置某点数权重骰子
* @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);
执行结果
什么地方用这个?
例如那种摇骰子走步类的游戏,每次摇骰子的时候,你可以把中大奖的点数配置一个概率,这样就可以控制中奖概率咯!
又或者其他类摇骰子的游戏,理论上都可以用上 ~
其他地方的使用自己发散想象吧
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于