贝利信息

javascript数学函数_如何生成随机数

日期:2026-01-08 00:00 / 作者:狼影
JavaScript生成随机数的核心是Math.random(),它返回[0,1)的浮点数;整数需用Math.floor缩放偏移,避免Math.round破坏均匀分布;密码学场景须用crypto API。

JavaScript 中生成随机数的核心函数是 Math.random()

Math.random() 是唯一原生支持的随机数生成器,它返回一个大于等于 0、小于 1 的浮点数(即区间 [0, 1))。所有其他范围的随机数都得基于它做缩放和偏移——不是封装成函数就万事大吉,关键在边界处理是否严谨。

生成指定范围整数的常见写法及陷阱

比如要生成 16 之间的随机整数(模拟掷骰子),错误写法是:Math.floor(Math.random() * 6) + 1 看似正确,但实际没问题;而真正危险的是:Math.round(Math.random() * 5) + 1 ——它会让 16 出现概率只有其他数的一半。

需要真随机?Math.random() 不够安全

Math.random() 是伪随机,由引擎实现决定(V8 使用 xorshift128+),不可预测但可复现。它**不适合密码学场景**,比如生成 token、加密盐值或抽奖种子。

多次调用 Math.random() 会不会“更随机”?

不会。连续调用不会提升随机性,反而可能因重复 seed(极罕见)或浮点精度叠加引入偏差。有人误以为 Math.random() * Math.random() “更乱”,其实它让结果更集中在 0 附近,分布严重偏斜。

边界计算和用途区分才是难点,不是记不住公式。