用php写一个百分比的触发概率,有保底次数和上限次数
时间: 2023-11-27 13:54:55 浏览: 23
php实现自定义中奖项数和概率的抽奖函数示例
以下是用 PHP 编写的触发概率计算函数,可以设置保底次数和上限次数:
```php
function triggerProbability($baseProb, $guaranteedNum, $maxNum) {
$randNum = rand(1, 100);
$prob = $baseProb;
// 如果没有达到保底次数,则必定触发
if ($guaranteedNum > 0) {
$guaranteedNum--;
return true;
}
// 超过上限次数,则不触发
if ($maxNum > 0 && $maxNum <= $guaranteedNum) {
return false;
}
// 计算触发概率
$prob *= (100 - $guaranteedNum) / 100;
if ($randNum <= $prob) {
return true;
} else {
return false;
}
}
```
使用方法如下:
- $baseProb:基础触发概率,以百分比表示,比如 5 表示 5%。
- $guaranteedNum:保底次数,即前 $guaranteedNum 次必定触发。
- $maxNum:最大触发次数,达到 $maxNum 次后不再触发。
示例:
```php
// 基础概率为 10%,有 3 次保底,最多触发 6 次
$baseProb = 10;
$guaranteedNum = 3;
$maxNum = 6;
$count = 0;
$triggered = false;
while (!$triggered && $count < $maxNum) {
$count++;
$triggered = triggerProbability($baseProb, $guaranteedNum, $maxNum);
}
if ($triggered) {
echo "第 $count 次触发了!";
} else {
echo "未触发。";
}
```
阅读全文