TypeScript指定范围随机数函数生成结果不均,是否存在代码问题?
你的随机数函数没问题,连续高频是随机数的正常表现
代码逻辑确认
你写的getRandomNumber函数逻辑是正确的,通过max = max + 1再计算的方式,确实能生成包含min和max的整数随机数,等价于更直观的写法:
function getRandomNumber(min: number, max: number): number { return Math.floor(Math.random() * (max - min + 1) + min); }
这段代码本身没有错误,完全符合你“包含范围两端值”的需求。
关于连续高频出现的问题
你看到的1、5连续重复、频率偏高,是随机数的正常表现,核心原因是:
- 随机数的「随机性」不要求短期序列绝对均匀,短期样本(你给出的只有39个结果)出现偏差是大概率事件。比如抛硬币连续出5次正面,不代表硬币有问题,只是随机波动的正常现象。
- 当你把生成的随机数样本量放大到几千、上万次时,各个数字的出现频率会逐渐趋近于理论值(比如1-5的每个数字占比约20%)。
额外说明
如果你的场景需要的是「短期无重复/更均匀的分布」,那需要额外的逻辑(比如洗牌算法生成不重复序列),但如果只是普通的随机数生成,当前函数完全满足需求。
内容的提问来源于stack exchange,提问作者GoldNova
相关产品推荐
相关产品推荐

