很简单的一个控制概率的骰子小函数哈,直接上代码
/**
*
* 配置某点数权重骰子
* @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);
执行结果
什么地方用这个?
例如那种摇骰子走步类的游戏,每次摇骰子的时候,你可以把中大奖的点数配置一个概率,这样就可以控制中奖概率咯!
又或者其他类摇骰子的游戏,理论上都可以用上 ~
其他地方的使用自己发散想象吧
🐶 你走,我不送你。你来,风雨无阻,我去接你。