Tool Detail
随机数生成器
按区间生成随机整数,支持不重复抽取,基于密码学安全随机数。
使用说明
这个工具能做什么
在指定区间内生成随机整数,可选「不重复」抽取。使用浏览器的密码学安全随机数(crypto.getRandomValues + 拒绝采样),不是 Math.random(),分布均匀、可预测性低。适合抽奖、随机编号、抽样、课堂点名等。
怎么用
- 填最小值、最大值(含两端)、生成个数
- 需要每个数都不一样时勾选「不重复」
- 点「🎲 生成随机数」,结果显示在下方,并给出最小值、最大值、合计、平均值
- 「复制结果」拿到每行一个的列表
常见问题
是真正的随机吗?
是密码学安全伪随机(CSPRNG),不是真随机物理过程,但由操作系统熵池提供种子,无法通过观察历史结果预测下一个数,足够用于抽奖、抽样、密钥生成等场景。
为什么不用 Math.random()?
Math.random() 是普通伪随机,种子可预测,且实现上存在偏差,不适合有公平性要求的抽取。本工具用 crypto.getRandomValues 加拒绝采样,避免取模带来的分布偏差。
"不重复"是怎么抽的?
用 Fisher–Yates 部分洗牌:把区间内的整数当作池子,只洗前 N 个位置,因此抽出的 N 个数一定互不相同,且每种组合概率相等。所以「区间内只有 5 个数却要抽 10 个」会直接报错。
区间范围有限制吗?
不重复模式下区间最多 200 万个整数,单次最多生成 10000 个,避免一次性分配过大的内存卡住浏览器。需要海量不重复随机数建议用命令行或脚本。
能生成随机小数吗?
不能,只生成整数。需要小数可以生成整数后除以 10 的幂,但要注意精度。
结果会上传吗?
不会,随机数在本地生成。