人们实际上拿随机数做什么

六个类别覆盖了几乎所有真实需求,而它们需要不同类型的随机性。

随机数 发布于 2026年10月20日 阅读约 2 分钟

六个类别

用途典型区间是否允许重复
公平抽奖1 到参与人数不允许
抽查复核1 到记录条数不允许
游戏机制骰子、d20、纸牌取决于骰子
测试数据任意区间或长度都行,通常允许
任务或座位分配1 到人数不允许
决策与打破平局1 到选项数不适用

不放回抽样是最常被做错的那个

一个一个抽出中奖者、撞上重复就重抽,是手工做法,它有两个问题:白白浪费抽取次数,而且即使过程真的公平,看上去也显得随意。不放回抽样——也就是部分洗牌——既正确,也更容易向人解释。

这个区别还改变了数学。放回时每次抽取概率相同。不放回时池子在缩小,所以每抽一次概率都会变化。

哪里不该用随机

任何需要可复现的东西:必须在多次运行之间保持一致的测试夹具、必须对同一个用户稳定的 A/B 分组,或者确定性的模拟。这些场合你需要的是一个带种子的生成器,而不是真正的随机——相同的种子会复现相同的序列。

而任何与安全相关的东西,都该用密码学随机源,而不是一个图方便的网页。抽奖用的随机数和生成令牌用的随机数看起来一模一样,对随机性的要求却正好相反。

常见问题

抽签和随机选一个有什么区别?

抽签通常意味着有顺序且不重复;选一个意味着一次独立选择。要产生多个中奖者时,你需要的是抽签行为。

随机数生成器能用来抽奖吗?

休闲性质的可以。任何有法律效力的场合,请在抽取前记录方法和参与名单,并保留带顺序的结果。

测试数据该用随机还是带种子?

如果测试依赖它,就用带种子的。每次运行都变的随机值会让失败难以复现。

配合这篇指南使用的工具

更多指南