随机数生成器
生成具有各种分布的随机数
如何使用随机数生成器
- 1设置你所需范围的最小值与最大值。
- 2选择要生成的数字个数,以及是否允许重复。
- 3生成并复制结果,或重新抽取一组新数字。
随机数是如何产生的
结果在 [min, max] 闭区间内均匀抽取区间内每个数字出现的概率相等;生成器以系统时钟为种子,因此连续抽取结果不同。
对于密码或抽奖等安全敏感场景,应使用密码学安全的生成器,而非通用生成器。
通用生成器多为线性同余或基于哈希的伪随机算法,输出由内部“种子”决定;同一种子会复现同一序列,因此可重复的科学实验需要固定种子以便他人复核。
密码学安全生成器(如系统的 /dev/urandom、CSPRNG)从不可预测的物理或系统噪声取熵,输出无法通过已见序列推算下一个值,适合令牌、盐值、密钥等场景。把两者混用会带来安全隐患或不可复现的实验结果。
| 使用场景 | 是否允许重复 | 范围建议 | 推荐生成器类型 |
|---|---|---|---|
| 抽奖中奖者 | 不允许 | 参与者编号区间 | 密码学安全生成器 |
| 骰子/牌局模拟 | 不允许 | 1–6 或固定牌池 | 通用伪随机 |
| 问卷抽样 | 允许 | 受访者编号 | 通用伪随机 |
| 生成密码/令牌 | 不允许 | 字符集长度 | 密码学安全生成器 |
| 自动化测试用例 | 允许 | 覆盖边界值 | 通用伪随机(可固定种子) |
不同抽取场景的推荐设置
常见问题
数字会重复吗?
需要不重复的值时关闭「允许重复」;默认开启,适用于相互独立的抽取。
它是真正的随机吗?
它是伪随机,对游戏和抽样足够好,但不适用于加密。
如何公平地抽取中奖者?
把范围设为参与者编号并抽取一次;公开方法以保证过程透明。
如何让结果可复现?
在支持种子的生成器里固定一个种子值;同一种子、同一算法、同一范围必定得到相同的抽取序列。
生成的是小数还是整数?
本工具按整数范围抽取;若需 0–1 之间的小数,可把范围放大(如 0–1000)再除以 1000 还原到 0–1。
