随机数生成器

在线随机数生成器可按指定范围生成整数或小数,支持批量生成与不重复抽取,适合抽奖、摇号、随机点名、分组、掷骰子和测试数据。

生成范围的下限,包含该值。

生成范围的上限,包含该值。

一次生成多少个随机数,最多 10000 个。

生成范围内的整数(含端点),如摇号、掷骰子、随机点名。

勾选后生成的整数互不相同,适合抽奖、摇号、随机排座位;要求个数不超过范围内的整数总数。

随机数
42

每次点「再生成一批」都会重新随机抽取。本工具用于抽奖、摇号、点名、随机分组、掷骰子等日常场景, 属非加密随机数,请勿用于生成密码、密钥、验证码等安全敏感用途。

怎么用

  1. 设定范围在「最小值」和「最大值」里填入生成区间,两端都包含在内。例如摇号填 1 到 100,掷骰子填 1 到 6,抽百分数填 0 到 100。整数模式下两端必须是整数。
  2. 选择数字类型与个数默认生成「整数」;需要带小数的随机数就切到「小数」并设定保留几位(0–10 位)。在「生成个数」里填一次要抽多少个,最多 10000 个。
  3. 需要时勾选「不重复」整数模式下勾选「不重复(无放回抽取)」,抽出的数字互不相同,适合抽奖、摇号、随机排座位。注意个数不能超过范围内的整数总数(如 1–10 最多抽 10 个)。
  4. 读结果并可再抽结果区即时显示随机数;生成多个时还会给出个数、总和、平均值、最小值和最大值。点「🎲 再生成一批」即可用新的随机种子重新抽一组。

核心要点

随机数生成器按你设置的最小值最大值、数字类型和个数生成结果;整数模式还可选择不重复抽取。

  • 范围两端都包含在内(闭区间),如 1–6 会包含 1 和 6。
  • 例如在 1–10 中抽 5 个不重复整数,某次结果可能是 8、2、10、1、5;最多只能抽 10 个。
  • 小数模式可设定保留 0–10 位小数。
  • 属非加密伪随机数,不要用于密码、密钥等安全场景。

原理与公式

随机数生成器的核心是一个伪随机数发生器(PRNG,Pseudo-Random Number Generator):它从一个随机种子(seed)出发,用确定性的数学公式推算出一串统计上均匀、彼此看不出规律的数。种子相同一定得到完全相同的结果;种子不同则通常得到不同结果(不是绝对——极少数情况下不同种子的前几个数也可能巧合相同)。本工具在页面加载时和你每次点「再生成一批」时,都会用浏览器的加密级随机接口(crypto.getRandomValues)取一个新的种子,所以刷新或重抽都会得到一组全新的数、几乎不可能刻意复现上一组——这正是日常随机工具该有的表现。

从 [0,1) 随机数映射到指定范围

PRNG 直接产出的是一个 [0, 1) 区间内的随机小数 u。要得到你指定范围里的数,概念上只需线性映射:

随机整数(含两端 min、max):
整数 = min + ⌊u × (max − min + 1)⌋
⌊ ⌋ 表示向下取整;+1 是为了让 max 也可能被取到。)
随机小数(按指定小数位数「均匀落在可表示刻度上」):先把范围换算成一张等间距刻度网格——步长为 10^−位数(如保留 2 位,步长 0.01),再在网格上均匀抽一个刻度。
刻度下标 lo = ⌈min × 10^位数⌉,hi = ⌊max × 10^位数⌋
小数 = (lo + ⌊u × (hi − lo + 1)⌋) ÷ 10^位数
这样每个结果一定落在 [min, max] 内,且区间内每个可表示刻度被抽中的概率相等(不像「先取连续小数再四舍五入」那样会把结果舍到区间外、或让两端点概率减半)。若范围内不存在该位数的小数(如 0.04–0.06 保留 1 位小数,0.0 与 0.1 都在区间外),工具会直接提示你扩大范围或减少小数位数。

大范围为什么也能保持均匀

简单的线性映射只在范围不太大时才自然均匀。这里的关键不在「单次输出的位数」,而在发生器的内部状态与种子的熵:如果 PRNG 只有 32 位状态(约 43 亿种),那么无论怎样拼接多次输出,整条随机序列都被这不到 32 位的信息完全决定,超过 2³² 个候选就必然有整段数字永远抽不到(例如把它摊到2³³ 个整数上,结果会全是偶数)。

为此本工具采用 128 位内部状态的 sfc32 算法,并在页面加载和每次「再生成一批」时用浏览器加密级接口(crypto.getRandomValues)取四个相互独立的 32 位随机字作为种子——种子本身就携带约 128 位熵,足以「寻址」到范围内的任意一个数。在此基础上,工具再拼接两次输出凑足 53 位随机比特以覆盖更宽的范围,并配合拒绝采样(落到会造成偏斜的尾部区间就重新抽)消除取模偏差。因此在安全整数范围(±2⁵³,约 9×10¹⁵)以内,范围里每个整数、每个可表示小数刻度都在统计意义上等概率出现(既无取模偏差,也无覆盖缺口);超出该范围的输入会被直接拒绝并提示缩小范围,而不会给出有偏差或不精确的结果。

汇总值(总和 / 平均值)的精度规则

生成多个数时给出的总和平均值均用高精度十进制累加(decimal.js),不走会丢位的浮点相加:

  • 总和在安全整数范围内精确无误差;整数模式保留 0 位小数,小数模式按你设定的小数位数呈现。
  • 平均值至少保留 6 位小数;当你设定的小数位数多于 6 位时,按你设定的位数呈现(例如保留 10 位时,极小的 0.0000000001 也不会被舍成 0)。
  • 若某组范围与个数的组合会让总和超出安全整数范围,工具会拒绝生成并提示缩小范围或减少个数,以保证展示的汇总值始终准确。

有放回 vs 无放回(不重复)

默认是有放回抽取:每个随机数独立生成,允许重复。勾选「不重复」则是无放回抽取——像从盒子里摸球摸出不放回。范围较小时用「部分洗牌」(Fisher–Yates 算法)打乱区间内全部整数后取前几个;范围很大时用「拒绝采样」(生成后遇到重复就丢弃重来)。因此不重复模式要求个数 ≤ 范围内整数总数

计算示例

min = 1max = 6(掷骰子),若 PRNG 给出 u = 0.42
1 + ⌊0.42 × (6 − 1 + 1)⌋ = 1 + ⌊0.42 × 6⌋ = 1 + ⌊2.52⌋ = 1 + 2 = 3
即得到点数 3。对 6 个等宽子区间而言,1–6 每个点数被取到的概率都是 1/6,分布均匀。

关于「随机」与安全性

本工具采用通用(非加密)PRNG,分布均匀、速度快,适合抽奖、摇号、点名、分组、掷骰子、生成测试数据等。它不是密码学安全的随机源:不要用它生成密码、密钥、验证码或任何安全敏感的随机值——那类用途应使用操作系统/浏览器提供的加密级随机接口(如crypto.getRandomValues)。本页所有计算均在浏览器本地完成,不上传任何数据。

常见问题

在线随机数生成器怎么指定范围并批量生成数字?
可以。填入最小值和最大值(两端都包含),选择生成整数还是小数、要几个,点「再生成一批」即可。例如要「1 到 100 之间的随机整数」就把最小值填 1、最大值填 100、类型选整数、个数填 1;要一次抽 5 个不重复的号码,把个数改成 5 并勾选「不重复」。所有计算都在你的浏览器本地完成,不联网、不上传。
随机数生成器的不重复抽取和普通模式有什么区别?
普通模式是「有放回」抽取:每个随机数都独立生成,可能出现重复(掷两次骰子都是 6 是正常的)。勾选「不重复」是「无放回」抽取:抽出的整数互不相同,就像从写好号码的盒子里一个个摸球、摸出不放回,常用于抽奖中奖号、随机点名、随机分组、打乱座位。因为不能重复,所以要抽的个数不能超过范围里的整数总数——比如 1–10 只有 10 个整数,最多抽 10 个。
随机数生成器是真随机吗?能用于密码或正式抽奖吗?
本工具生成的是计算机伪随机数(PRNG),适合抽奖、摇号、点名、掷骰子和测试数据等非安全日常场景,但不是密码学安全的随机源。密码、密钥、验证码和加密令牌应使用系统提供的加密级随机接口。用于有争议或需审计的正式抽奖时,还应采用符合主办规则的流程,并保留抽取规则、操作录屏或第三方见证材料。
随机数生成器怎么生成指定小数位数的随机数?
把「数字类型」切到「小数」,再设定 0–10 位小数。工具会按设定位数对应的刻度生成范围内结果:例如范围 0 到 1、保留 4 位,某次可能得到 0.3271;范围 0 到 100、保留 2 位,某次可能得到 37.42。位数设为 0 时只生成整数。若范围内没有符合该位数的刻度,例如 0.04 到 0.06 保留 1 位,工具会提示扩大范围或减少小数位数。
随机数生成器为什么每次结果不同?能复现同一组数字吗?
每次点击「再生成一批」或重新打开页面,工具都会从浏览器随机接口取得新种子,因此结果通常不同。本页不提供手动固定种子的入口,无法按同一种子复现上一组数字。科研或程序调试若要求可复现序列,需要在代码中保存固定 seed,并调用支持传入该 seed 的随机数函数。
随机数生成器一次能生成多少个数字?范围可以包含负数吗?
一次最多生成 10000 个随机数,足够覆盖抽奖名单、随机分组、批量测试数据等场景。范围可以填负数,也可以最小值和最大值一正一负,例如 −50 到 50;只要最小值不大于最大值即可。整数模式下要求两端都是整数;小数模式下两端可为任意数值。当最小值等于最大值时,生成的每个数都等于该值。

来源与更新

随机数生成的算法与概念依据(检索日期 2026-08-03):

本工具为纯数学随机计算,不含税率、利率等会随政策变化的参数,无需登记政策日历。内容经本站编辑整理与核对,仅供学习与参考。

最近更新:2026-08-03

本工具生成的是非加密的伪随机数,供抽奖、摇号、教学、测试等日常场景参考使用;请勿用于密码、密钥、验证码等安全敏感用途。用于正式抽奖时请自行留存证据或由第三方见证。