Tools100% 本地
← 所有工具

随机数生成器

crypto.getRandomValues · 均匀 · 浏览器内

crypto.getRandomValues 中抽取密码学随机的整数或小数。本页使用拒绝采样,所以结果在任意范围内都均匀 — 没有取模偏差。可配置范围、数量、小数位数、排序方式、输出分隔符,以及"仅唯一"模式。
模式
范围
数量
唯一
排序
格式
 
waiting
Click Generate
点击复制

为何这是"真随机"

浏览器暴露两种随机源:Math.random(),一个快速但每次运行确定的伪随机生成器;以及 crypto.getRandomValues(),一个由操作系统熵池播种的密码学安全 RNG — 与生成 TLS 会话密钥使用的源相同。本页对你抽取的每个值都使用后者。

避免取模偏差

简单的"由 RNG 生成整数"实现会做 rand() % n — 当 n 不能整除 RNG 字长时,这会让范围低端略受偏向。偏差很小但真实存在,在百万级抽样下可被轻易检测出来。

小数模式

当你请求小数时,本页从 crypto.getRandomValues 中读 53 位、得到 [0, 1) 的均匀值,再缩放到目标范围。最多可用 15 位精度 — 这是 IEEE-754 双精度浮点数的实际上限,也就是 JavaScript 的数值类型。

唯一模式

开启不允许重复后,本页对整数范围执行部分 Fisher–Yates 洗牌,这能保证抽到的唯一值均匀分布 — 这是无放回公平抽样的标准做法(也是洗牌或不重抽的抽奖所用算法)。

隐私

所有值都在本地生成。本页在最初的静态资源加载之后不发任何网络请求,也没有统计脚本。你的输入与生成的值都不会离开页面。