随机数生成器
生成符合密码学安全标准的随机整数——可自定义取值范围、数量、是否仅保留唯一值,并支持以十进制 / 二进制 / 八进制 / 十六进制格式输出。
使用方法
- 1 设置最小值(Min)、最大值(Max)和数量(Count)。
- 2 如需不放回抽样(结果不重复),可开启“仅生成唯一值”选项。
- 3 选择进制(十进制 / 二进制 / 八进制 / 十六进制)以及分隔符。
为什么使用此工具
- 符合密码学安全标准——使用 Web Crypto API,而非 Math.random()。
- 唯一值模式采用拒绝采样(rejection sampling)算法,在整个取值范围内均匀分布。
- 支持 4 种进制输出——可直接粘贴到你的代码中使用。
- 完全在客户端运行——你的数字永远不会离开浏览器。
常见问题
这些数字有多随机?
它们由 <code class="font-mono text-xs">crypto.getRandomValues()</code> 生成,并采用无偏均匀采样方法——在生成时就已消除模偏差(modulo-bias)问题。
单次最多能生成多少个数?
每次点击最多可生成 10,000 个数。在“仅生成唯一值”模式下,数量(count)必须小于等于取值范围的大小(range)。
为什么可以输入负数?
最小值和最大值都是带符号整数——你可以使用任意整数区间。
什么是 随机数生成器?
随机数生成器(Random Number Generator)是一款直接在浏览器中生成随机整数的工具,采用符合密码学标准的高强度随机源。用户可以设置取值范围与生成数量,选择结果是否仅保留唯一值,并以十进制、二进制、八进制或十六进制格式查看结果。整个生成过程完全在客户端完成,无需注册,也不经过任何服务器。
功能特性
密码学级强随机性
使用 crypto.getRandomValues() 为每个候选值获取 64 位数据,并丢弃超过该范围最大倍数的值,从而避免简单的 Math.random() * range 方式所引入的取模偏差。
支持十进制、二进制、八进制或十六进制输出
每个生成的整数均可格式化为十进制(base 10)、二进制(0b 前缀)、八进制(0o 前缀)或十六进制(0x 前缀,大写字母)。
仅唯一值模式
防止输出结果中出现重复值。范围不超过 100,000 时使用内存中的 Fisher-Yates 洗牌算法;范围更大时则改用基于 Set 的水塘抽样,直到收集到所需数量的不同值为止。
可自定义数量与分隔符
每次运行可生成 1 至 10,000 个数字,以换行符、逗号或空格连接,可直接从结果框中复制。
示例
Input
min=1, max=100, count=10, unique=true, base=10, separator=comma
Output
7, 42, 88, 15, 63, 29, 91, 3, 56, 74 (10 unique integers between 1 and 100, comma-separated)
常见使用场景
-
1
抽奖与赠品活动开奖
在已知范围内生成一组不重复的唯一中奖号码。
-
2
抽样与测试数据生成
生成十进制或十六进制的随机整数批次,用于初始化测试夹具、压力测试 ID 或统计抽样。
-
3
游戏与桌面游戏工具
在指定范围内(如 1-6、1-20)反复掷骰子,或为彩票类游戏抽取固定数量的不重复号码。
使用浏览器的 Web Crypto API(crypto.getRandomValues)并结合拒绝采样(rejection sampling)方法,在用户设定的 [min, max] 范围内生成无偏均匀分布的随机整数,而非使用 Math.random()。每次最多支持生成 10,000 个数值,提供可选的仅唯一值模式(范围不超过 100,000 时使用 Fisher-Yates 洗牌算法,更大范围则通过 Set 实现水塘抽样),并支持十进制、二进制、八进制或十六进制格式输出。全部计算均在客户端通过 JavaScript 完成——不会将任何数字发送至服务器。
- 分类
- 创作者
- 价格
- 免费
- 隐私
- 基于浏览器
- 注册
- 无需
参考资料
- Crypto:getRandomValues() 方法 — MDN Web Docs
- Web Crypto API — MDN Web Docs
- BigInt — MDN Web Docs
隐私
除非另有说明,否则你的数据永远不会离开浏览器。随机数生成器 完全在客户端运行 — 无需上传服务器,不记录日志,不追踪你输入的内容。
相关工具
在 Zerethon Social 上创作、分享与成长
免费注册。赚取积分,收集成就,与全球创作者建立联系。