You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

第三方API模拟测试服务:按请求次数与概率触发异常的数学公式

实现基于概率的异常触发逻辑(含数学公式与代码示例)

核心思路与数学公式

你需要的异常触发逻辑分为两种常见实现方式,对应不同的数学模型:

1. 纯随机概率触发(不依赖请求次数N)

这是最符合“概率百分比”定义的实现,核心利用均匀分布随机数判断:

  • 设目标概率为 P(将百分比转为小数,如10%对应0.1)
  • 生成范围在 [0, 1) 的均匀随机数 R
  • 数学判断公式:如果 R < P,则触发异常

这种方式下,请求次数N无需参与计算,因为每次请求都是独立随机事件,长期统计下来触发频率会趋近于设定概率。

2. 基于次数的精确概率触发(依赖请求次数N)

如果需要保证统计周期内严格符合触发比例(比如每100次请求必触发10次),可采用周期取模的方式:

  • 设周期大小为100(对应百分比基数),目标触发次数为 K = 概率百分比(如10%对应K=10)
  • 计算当前请求次数N在周期内的位置:pos = N % 100
  • 数学判断公式:如果 pos < K,则触发异常

这种方式能确保每100次请求中刚好有K次触发异常,适合需要稳定触发比例的测试场景。


代码实现示例

纯随机触发版本(Java)

import java.util.Random;

public class ExceptionSimulator {
    // 全局单例随机数生成器,避免重复初始化
    private static final Random RANDOM = new Random();

    /**
     * 判断是否应抛出异常
     * @param probabilityPercent 触发概率(0-100的整数)
     * @param currentCount 当前总请求次数(纯随机模式下可忽略)
     * @return true=抛出异常,false=正常响应
     */
    public static boolean shouldThrow(int probabilityPercent, long currentCount) {
        if (probabilityPercent <= 0) return false;
        if (probabilityPercent >= 100) return true;
        
        double probability = probabilityPercent / 100.0;
        return RANDOM.nextDouble() < probability;
    }
}

精确次数触发版本(Java)

public class PreciseExceptionSimulator {
    private final int targetTriggersPerCycle;
    private static final int CYCLE_SIZE = 100;

    public PreciseExceptionSimulator(int probabilityPercent) {
        this.targetTriggersPerCycle = Math.max(0, Math.min(probabilityPercent, 100));
    }

    /**
     * 判断是否应抛出异常
     * @param probabilityPercent 触发概率(0-100的整数)
     * @param currentCount 当前总请求次数
     * @return true=抛出异常,false=正常响应
     */
    public boolean shouldThrow(int probabilityPercent, long currentCount) {
        int positionInCycle = (int) (currentCount % CYCLE_SIZE);
        return positionInCycle < targetTriggersPerCycle;
    }
}

注意事项

  • 纯随机模式:短期请求中触发次数可能偏离设定概率,但请求量增加后会逐渐趋近目标概率,适合模拟真实API的随机异常场景。
  • 精确次数模式:触发比例完全符合设定概率,但缺乏随机性,适合需要可控触发次数的测试场景。

内容的提问来源于stack exchange,提问作者Stanislav Tun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 22:35:21