编码解码哈希加密格式化时间转换开发生成文本处理网络工具其他工具
首页 / 开发生成 / 随机数生成器

随机数生成器

按范围批量生成随机数

范围与选项
结果

这个工具能做什么

这是一个在浏览器里运行的随机数生成器,核心动作很直接:给定一个数值区间和需要的个数,一次性产出若干个随机整数或随机小数。它解决的是手动想数又慢又不匀的问题——不管是抽奖要抽序号、造测试数据想要一批互不相同的样本,还是掷骰模拟需要 1 到 6 的点数,人脑挑出来的数字往往带偏好、也难保证真正随机。设定最小值、最大值和数量,选整数还是小数,点一下就能批量拿到结果,整数默认是闭区间(含两端),勾选不重复还能保证这一批整数彼此不同。

底层依赖的是 JavaScript 的 Math.random(),它返回 [0, 1) 区间内近似均匀分布的浮点数,属于伪随机数(PRNG),由引擎内部算法(如 V8 的 xorshift128+)根据内部状态推演得出,速度快但无法预设种子。生成指定范围的整数时,用 Math.floor(min + Math.random() * (max - min + 1)) 把 [0,1) 线性映射到目标区间再向下取整,这样才能等概率地覆盖到最大值本身;小数则保留映射后的浮点结果或按需截断精度。不重复模式在整数上通过去重(Set)或洗牌(Fisher-Yates)实现,因此要求的数量不能超过区间内可取整数的总数,否则凑不齐互异的值。全部计算都在浏览器本地完成,参数和结果不会上传到服务器。

最常见的用法是抽奖和随机取样。比如年会抽奖,参与者编号是 1 到 500,把最小值设 1、最大值设 500、数量设 10 并勾选不重复,就能一次抽出 10 个互不相同的中奖号;再比如从一张有 2000 行的数据表里随机抽 50 行做人工复核,生成 50 个不重复行号即可精准定位。造测试数据也很省事——给接口做压测要灌入一批年龄、金额或经纬度,直接生成对应范围的随机整数或小数批量填入,比手写更快,分布也更贴近真实取值。

需要提醒的是,Math.random() 产出的是伪随机数,统计上足够均匀,但不具备密码学安全性,不适合生成密钥、令牌、验证码等安全敏感的值——那类场景应使用 crypto.getRandomValues() 这样的加密安全随机源。另外要注意闭区间差异:整数默认包含最大值,若编号从 0 起算或需要左闭右开,记得相应调整边界。小数结果受 IEEE 754 双精度浮点限制,位数多时末尾可能出现精度尾差,对精度敏感时应自行四舍五入到所需位数。

随机数生成器是一个免费的在线工具,打开网页就能用,不用下载也不用注册。平时大家搜的“随机数生成”、“随机数”、“随机整数”,说的都是这个。

常见使用场景

使用方法

  1. 把内容粘贴到输入框(生成类工具直接设置选项)。
  2. 按需要选择选项,点操作按钮。
  3. 结果出现在下方,点「复制结果」即可带走。

常见问题

生成的整数包含最小值和最大值吗?
默认是闭区间,两端都可能取到。例如设 1 到 6,结果会覆盖 1、2、3、4、5、6 六个值,且各值等概率出现。
不重复模式为什么有时凑不齐数量?
不重复只能在区间内可取的整数里挑选,要求的数量不能超过区间容量。比如 1 到 10 最多给出 10 个不重复整数,要 20 个就无法满足。
这个随机数能用来生成密码或验证码吗?
不建议。它基于 Math.random() 的伪随机算法,统计均匀但可被预测,不具备密码学安全性;密钥、令牌、验证码请改用 crypto.getRandomValues() 之类的安全随机源。
生成的小数为什么末尾有一长串数字、看着不整齐?
这是 JavaScript 浮点数(IEEE 754 双精度)的固有表现,映射运算会带来精度尾差。需要固定位数时,自行把结果四舍五入到所需小数位即可。
每次重新生成,结果会一样吗?
不会。Math.random() 依赖引擎内部状态且无法设定种子,每次调用都产出新的序列,因此重复生成得到的是不同结果,同一批数无法复现。

相关工具

查看全部「开发生成」工具 →

相关名词解释