随机数生成器
在任意范围内生成安全的随机数:整数或小数,可选是否允许重复,可排序或乱序。一次最多 10,000 个,在浏览器中运行。
0 = 整数
什么是 随机数生成器?
这个工具会在你选定的 最小值 和 最大值 之间抽取随机数。它可以生成整数或最多 10 位小数的数字,避免重复,对结果排序,一次最多输出 10,000 个值。随机性来自浏览器的密码学安全生成器,而不是 Math.random()。
如何使用 随机数生成器
- 输入 最小值 和 最大值(两者都包含在范围内)。
- 设置需要的 数量 和 小数位数(0 表示整数)。
- 如果每个数字都必须不同,请勾选 不重复(唯一数字),并选择 排序 方式和 分隔符。
- 点击 生成,然后复制列表或将其下载为文本文件。
示例
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。