🎲 随机数生成器
抽签、抽奖、抽样都用得上,基于密码学级随机源,本地生成。
如何使用随机数生成器
设定范围与数量,生成随机数字或抽签结果,支持不重复抽取模式。
计算原理与公式
网页端的"随机"分两类:本工具的普通随机使用 Math.random(),适合抽签、抽样、排序打乱等日常用途;密码学安全随机使用 crypto.getRandomValues(),用于生成密码、令牌等安全敏感场景。两者的可预测性完全不同。
适用场景
活动抽签、随机抽样调查、决定谁先来、列表随机排序、生成测试数据。
计算示例
两种随机数生成方式的可预测性对比:
| 特性 | Math.random() | crypto.getRandomValues() |
|---|---|---|
| 算法 | xorshift 类,种子可推 | CSPRNG,不可预测 |
| 适合 | 抽签、抽样、打乱 | 密码、令牌、密钥 |
| 能否用于密码 | ❌ 不可 | ✅ 可以 |
计算局限与假设
需要保证公平(如抽奖)时,建议用「不重复抽取」模式,避免重复中奖。若用于正式抽奖并涉及金钱价值,建议记录随机种子以便审计。本工具的随机结果不满足密码学强度要求,生成密码请使用密码生成器。
常见问题
随机数抽奖真的公平吗?
统计意义上公平:每个数字被抽中概率严格相等。若用于有奖金的公开抽奖,建议把规则、范围、生成过程录屏留档,争议时能自证清白。
连续抽到同一个数,是不是坏了?
不是。真正的随机就包含「看起来不随机」的片段——10 次里出现两次相同数字的概率约 43%。如果连续多次生成的序列永远不重复,反而说明是伪随机坏了。
可以用来选学号/抽签吗?
可以,课堂抽签、分组、抽顺序都常用。注意把「范围、个数、是否可重复」三个参数在抽取前告诉所有人,程序公平一半来自算法,另一半来自规则透明。