博客
简体中文

随机数生成器 — 指定范围在线抽取

支持范围、不重复和小数的加密级随机数生成器

在浏览器中处理 · 不上传任何内容

数字类型
排序
分隔符
结果

还没有生成。点击“生成”试试吧。

工具简介

设定最小值、最大值和需要的个数,工具就会帮你随机抽取数字。适合抽奖、排座顺序、测试数据、桌游规则,或者任何需要一个“谁也没选过”的数字的场合。支持负数范围,也可以切换到固定小数位数的小数模式。所有计算都在浏览器标签页中完成,设置和结果不会发送到服务器。

使用方法

  1. 选择 整数 或 小数。
  2. 输入最小值和最大值,两端的数字都可能被抽到。
  3. 输入需要的数量,范围 1 到 10,000。
  4. 如果每个数字都必须不同,打开 不重复。小数模式下还要选择小数位数。
  5. 点击 生成。查看结果时可以随时切换排序和分隔符,然后点击 复制 带走结果。

工作原理

  • 随机来源:只使用 crypto.getRandomValues 生成的 32 位值,从不使用 Math.random。
  • 均匀分布:直接对 32 位原始值取模会让小数字略占优势。工具会丢弃落在不均匀尾部的值并重新抽取(拒绝采样),保证每个数字机会均等。
  • 超大范围:范围超过 2^32 时改用 BigInt 运算,即使是正负 9,007,199,254,740,991 的完整范围也不会有偏差。
  • 不重复:使用 Floyd 抽样算法,只取所需数量的值,无需列出整个范围。每一种组合的概率都相同;不选排序时,顺序也是随机打乱的。
  • 小数:在范围内所有 10^-位数 的倍数中均匀选取(两位小数即以 0.01 为步长),并以精确的文本输出,不会出现浮点误差。
  • 显示选项:排序方式和分隔符(逗号、空格、换行)只重新排版已生成的数字,不会重新抽取。

示例

设置 可能的结果
1–33,6 个,不重复,升序 3, 8, 15, 21, 27, 32
-10–10,5 个 7, -3, -3, 0, 10(允许负数和重复)
0–1,两位小数,3 个 0.27, 0.84, 0.05
1–100,1 个 1 到 100 之间的任意一个数

常见问题

生成的数字真的随机吗?和 Math.random 有什么区别?

本工具只使用浏览器内置的加密随机数生成器(crypto.getRandomValues),从不使用 Math.random。它还会丢弃少数会让小数字更容易出现的原始值并重新抽取(拒绝采样),消除取模偏差,因此范围内每个数字出现的概率完全相同。

不重复模式下,如果要的数量超过范围内的数字个数会怎样?

比如从 1 到 5 里不可能抽出 6 个不同的数字,这时工具会提示错误,不生成任何结果。请扩大范围或减少数量。即使范围非常大,也只做所需数量的计算,速度依然很快。

数字最大可以到多少?

整数模式支持 -9,007,199,254,740,991 到 9,007,199,254,740,991 之间的任意安全整数,这是 JavaScript 能精确表示的整数上限。每次可以生成 1 到 10,000 个数字。

修改排序方式或分隔符会重新生成数字吗?

不会。排序和分隔符只改变已生成数字的显示方式。想要新的数字,请再点一次“生成”。

没找到想要的工具?