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

如何避免连续生成4个小于50ms的随机延迟?代码求助

解决连续4个小于50ms随机延迟的问题

首先得指出你现有代码里的几个核心问题,这也是导致脚本跑不起来或者功能失效的原因:

  • 循环逻辑混乱:你手动控制i的增减和重置,比如当total >50时把i重置为0,这很容易导致死循环,永远无法退出循环;而且totaldelay和total变量名不一致,会引发逻辑错误。
  • 思路偏差:你似乎在计算两个延迟的总和,但需求是单个延迟连续4次小于50ms,第四个必须≥50ms,所以应该跟踪的是连续小于50ms的次数,而不是延迟总和。

正确的实现思路

我们需要维护一个计数器,记录当前连续生成的小于50ms延迟的次数:

  1. 初始化计数器consecutiveLow = 0
  2. 每次生成延迟前,判断计数器:
    • 如果consecutiveLow == 3(已经连续3个小于50ms),那么强制生成50-100ms的延迟
    • 否则,正常生成20-100ms的随机延迟
  3. 生成延迟后,更新计数器:
    • 如果当前延迟 <50ms,consecutiveLow +=1
    • 否则,把consecutiveLow重置为0

修正后的代码示例

int consecutiveLow = 0;
// 生成4个延迟的示例(如果需要持续生成可以改成无限循环)
for (int i = 0; i < 4; i++) {
    int delay;
    if (consecutiveLow == 3) {
        // 第4个必须≥50ms,锁定50-100ms范围
        delay = RandomInt(50, 100);
    } else {
        // 正常生成20-100ms的随机延迟
        delay = RandomInt(20, 100);
    }
    
    // 这里可以添加对生成延迟的使用逻辑,比如执行延迟操作
    printf("生成的延迟:%d ms\n", delay);
    
    // 更新连续低延迟计数器
    if (delay < 50) {
        consecutiveLow++;
    } else {
        consecutiveLow = 0;
    }
}

逻辑说明

  • 这个逻辑不仅能解决你当前生成4个延迟的需求,还能无缝扩展到持续生成延迟的场景——只要连续3个都是低延迟,下一个就强制生成高延迟,从根本上避免连续4个低延迟出现。
  • 相比你原来的循环,这个实现逻辑清晰,不会出现死循环,变量统一,也更容易维护和调试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:19:23