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

Math.random 概率异常?连续7次成功概率不符预期

问题排查与解决

首先明确:问题和Math.random()无关,是你的概率计算逻辑和统计指标定义错了,拆解如下:

1. 单次成功概率完全算错了

你写的delay = Math.floor(Math.random()*5)*10,Math.random()*5生成[0,5)区间的数,取整后得到0,1,2,3,4这5个整数,乘以10后对应0,10,20,30,40。其中满足delay <=30的是前4个值,所以单次成功概率是4/5=80%,不是你以为的3/4(75%)。

连续7次成功的理论概率是0.8^7≈0.2097(约21%),和你实际看到的0.26已经很接近——差距来自第二个错误。

2. 统计比率的计算逻辑错误

你用wins/restarts来计算“连续7次成功的概率”,但这个比值的意义是成功次数÷失败次数,而非成功次数÷总尝试次数(总尝试次数=成功次数+失败次数)。

按照正确的概率计算方式,应该用wins/(wins + restarts):

  • 当理论概率是0.2097时,失败次数是成功次数的(1-0.2097)/0.2097≈3.77倍,那么wins/restarts≈1/3.77≈0.265,正好和你看到的0.26左右完全吻合。

修复建议

  • 若要测试连续7次成功的真实概率,把统计代码里的比率计算改成wins/(wins + restarts);
  • 若确实需要单次3/4的成功率,修改delay生成逻辑,比如改成delay = Math.floor(Math.random()*100),再判断delay <=75,这样逻辑更直观;
  • 递归调用rainbow()可能导致调用栈溢出,建议改成setTimeout(rainbow, 0)或用循环避免深层递归。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:13:30