随机数生成器

在任意范围内生成安全的随机数:整数或小数,可选是否允许重复,可排序或乱序。一次最多 10,000 个,在浏览器中运行。

0 = 整数

什么是 随机数生成器?

这个工具会在你选定的 最小值 和 最大值 之间抽取随机数。它可以生成整数或最多 10 位小数的数字,避免重复,对结果排序,一次最多输出 10,000 个值。随机性来自浏览器的密码学安全生成器,而不是 Math.random()。

如何使用 随机数生成器

  1. 输入 最小值 和 最大值(两者都包含在范围内)。
  2. 设置需要的 数量 和 小数位数(0 表示整数)。
  3. 如果每个数字都必须不同,请勾选 不重复(唯一数字),并选择 排序 方式和 分隔符。
  4. 点击 生成,然后复制列表或将其下载为文本文件。

示例

输入
Minimum 1, Maximum 49, How many 6, No duplicates, Sort ascending
输出
16
19
27
40
44
48

数值是随机的,所以你得到的结果会不同。

何时使用 随机数生成器

适合抽奖和赠品活动、挑选测试样本、课堂练习、游戏,或任何需要公平、不可预测的数字的场合。它不能替代受监管博彩中经过认证的随机数生成器;密码或密钥请改用专门的密码或密钥生成器。

随机数生成器 的工作原理

随机字节来自 crypto.getRandomValues。要在大小为 *n* 的范围内取一个值,工具使用 拒绝采样:抽取一个 32 位(或 53 位)整数,丢弃超过 *n* 的最大倍数的值,这样范围内的每个数字概率完全相同(没有取模偏差)。小数通过在步长为 10^-d 的网格上抽取整数再相除得到,因此 0 到 1、保留 2 位小数时,会等概率地给出 0.00 … 1.00 这 101 个值之一。不重复的数字使用 Robert Floyd 采样算法,它在 *k* 步内选出 *k* 个不同的值,而无需构建整个范围,然后再用 Fisher–Yates 洗牌。

常见用例

  • 给参与者编号,为赠品活动抽取中奖者
  • 从 1 到 49 中挑选 6 个不重复的彩票式号码
  • 为测试数据集生成随机 ID 或样本量
  • 为模拟选取随机小数值(例如 0.00–1.00)
  • 把学生或玩家随机分配到不同位置

常见问题

这些数字是真正随机的吗?

它们通过 crypto.getRandomValues 来自操作系统的密码学安全随机数生成器,不可预测,适用于安全场景。拒绝采样消除了简单取模会带来的偏差。

最小值和最大值包含在内吗?

包含。最小值为 1、最大值为 6 时,1 到 6 的每个值都可能出现,就像掷骰子一样。

为什么勾选“不重复”会出错?

一个范围内的不同值数量有限。例如 1–10 只有 10 个值,所以无法从中得到 11 个不重复的数字。请扩大范围、增加小数位数或减少数量。

可以生成负数吗?

可以。使用负的最小值即可,例如 -50 到 50。

探索更多分类