Toolify

随机数生成器 (加密学安全, 带去重模式)

选最小、最大、数量即可生成加密学安全的随机整数。打开「去重」用于抽奖与彩票 (无放回抽取)。

设范围并点「重新生成」获取随机数。

工作原理

为什么这真的是随机

我们用 crypto.getRandomValues — 浏览器加密学安全的随机源 — 而非 Math.random()。CSPRNG 输出无法从过去值预测, 这对彩票抽取、博彩相关应用、以及任何「真正随机」是要求而非「任意」的场景至关重要。

我们也用棄却采样确保所选范围内分布完全均匀。素朴的 'random % range' 在 range 不能整除 2³² 时引入偏差。棄却采样丢弃会导致偏差的值并重试, 所以你范围内的每个数有完全相同的概率。

去重模式与允许重复模式

默认模式: 每个数独立 — 可能有重复。这是日常使用中通常意义的「随机」(掷骰、选电影、随机化测试)。

去重模式: 无放回抽样 — 一旦抽出某数, 同一批次内不再抽到。适合: 彩票 (1-49 中选 6 个)、抽奖、组队分配、任何「从 M 中选 N 个」场合。需要 数量 ≤ 范围。

常见用例

彩票 / 抽奖: 1-49 中 6 个唯一数, 或你的抽奖规则。打开「去重」。

掷骰: 1-6 范围 (D20 用 1-20)。关闭「去重」让每次掷独立。

测试随机抽样: 1-10000 中选 10 个用户 ID 抽查。「去重」避免重复。

模拟抛硬币: 0-1 范围多次。统计正反次数检查公平性 (大样本会接近 50/50)。

常见问题

对抽奖或彩票公平吗?

随机性加密学安全且无偏。法律上是否「公平」用于官方彩票取决于司法辖区规则 — 许多要求经过认证的硬件 RNG。

与 Math.random() 的差别?

Math.random() 用算法, 攻击者可从过去输出预测后续。crypto.getRandomValues 用 OS 级加密 RNG 不可预测。需要真正公平就用本工具。

可以得负数吗?

可以。把最小值设为负值。

范围最大是多少?

受 JavaScript 安全整数范围限制 (~2⁵³), 但实际十亿级毫无问题。棄却采样技术正确处理任何范围。

为什么数量 > 范围时「去重」失败?

如果你想从 1-5 选 10 个唯一数, 4 个不存在。校验提示扩大范围或减少数量。

适合掷骰吗?

适合 — 设范围 1-6 (或你的骰), 关闭「去重」让每次掷独立。

可以保存种子复现吗?

不能 — 安全随机按设计无种子。需可复现「随机」用于测试时, 用带种子 PRNG 库。

数据会上传吗?

不会。生成完全在本地。

相关工具

最后更新: