🎲
免费随机数生成器
在任意范围内生成随机数、创建唯一数字列表或掷骰子。使用密码学安全的随机性。
加载后可离线使用
🔒 每个数字均使用浏览器的加密安全随机数(crypto.getRandomValues)— 真正公平,而非可预测的 Math.random()。不传输任何数据。即便如此,请勿将这些数字用于加密密钥生成、安全令牌或受监管的彩票/博彩应用,这些场景需要经过审计的硬件认证随机源。
常见用途
- 生成彩票号码为Powerball、Mega Millions、EuroMillions等抽奖选择随机号码。
- 为赠送活动选择随机获胜者从编号的参赛名单中公平选择随机获胜者,用于竞赛和赠送活动。
- 掷骰子进行桌面游戏掷任意骰子组合——d4、d6、d8、d10、d12、d20、d100——用于龙与地下城和桌面RPG。
- 研究的随机抽样生成随机样本、分配随机ID或从编号数据集中选择随机子集。
- 生成测试数据随机数创建大量随机数列表,用于测试算法、填充数据库和系统压力测试。
工作原理
此工具生成的每个数字都来自 crypto.getRandomValues——浏览器的加密安全随机源,与生成 TLS 密钥所用的相同。在此之上有一个手写的拒绝采样算法,消除简单的 Math.random() % range 实现中常见的取模偏差,并通过 BigInt 运算支持大于 2^32 的范围。
- 1设置范围和模式在单个数字、批量列表(最多 1000 个)或多面骰子(d4 到 d100)之间选择。对于列表,你还可以要求值不重复,并可选择按升序排列输出。
- 2crypto.getRandomValues 获取原始熵每个数字都从由浏览器加密 RNG 填充的 Uint32Array(范围大于 2^32 时为 BigUint64Array)中抽取——而不是 Math.random()。然后拒绝采样会丢弃可能造成分布偏差的值,使范围内的每个整数概率完全相等。
- 3不重复模式使用 Fisher-Yates 或拒绝跟踪开启不重复模式且范围可放入内存(最多 100,000 个值)时,工具会生成完整的数值池并用 Fisher-Yates 洗牌。对于非常大的范围,则逐个抽取数值并跳过重复——避免构建数十亿项数组的内存开销。
- 4结果带动画反馈呈现并保留在会话历史中最终数值通过 requestAnimationFrame 以动画方式出现(数字为老虎机滚动,骰子模式为翻滚的骰子),然后显示在可滚动的历史记录中,随时可以复制。任何内容都不会离开你的浏览器。