随机数生成器 (加密学安全, 带去重模式)
选最小、最大、数量即可生成加密学安全的随机整数。打开「去重」用于抽奖与彩票 (无放回抽取)。
工作原理
为什么这真的是随机
我们用 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 库。
›数据会上传吗?
不会。生成完全在本地。
相关工具
最后更新: