不重复随机数生成器:完整指南
2026年7月17日 · iGotRandom
如果每个结果都必须对应不同的人、奖品或座位,请使用不重复随机数生成器。 打开随机数生成器,输入最小值、最大值和数量, 再开启不重复选项即可。
快速答案
- 不重复抽取属于不放回抽样:一个数字入选后,会离开当次候选集合。
- 区间中共有
N = max - min + 1个数字。 - 请求的数量不能超过
N。 - 排序只改变显示次序,不改变入选的数字。
- 首次抽取前应公布排除项和重抽条件。
“不重复”是什么意思?
一个数字入选后,就不能在同一组结果中再次出现。例如,从 1 到 10
抽取三个数字得到 2, 7, 9,每个数字只出现一次。
不放回抽样会在抽取过程中防止同一数字再次入选;它不等于先生成含重复项的结果,再删除重复项。 事后去重可能使结果数量少于请求值,而且改变了流程。放回抽样则会把数字 放回候选池,因此像多次掷骰子一样允许重复。
最多能抽取多少个数字?
最小值和最大值都包含在区间内,所以区间大小为:
N = max - min + 1
本站不重复数量上限是 min(N, 100)。即使区间包含超过 100 个数字,
同一组结果最多也只能生成 100 个数字。
从 5 到 12 时,N = 12 - 5 + 1 = 8。从 0 到 9 时,N = 10;
0 也是候选数字。
如果请求的数量大于 N,就无法完成抽取。此时应扩大区间、减少数量,或者允许重复, 而不是默默返回数量不足的结果。
如何设置不重复抽取
- 打开随机数生成器。
- 把第一个候选号码设为最小值,最后一个设为最大值。
- 输入所需结果数量,并选择不重复。
- 只有在抽取顺序不重要时才开启排序,然后生成结果。
例如,从 30 名已编号的参与者中选 5 人,设最小值为 1、最大值为 30、 数量为 5,就不会在同一组结果中重复选中一人。
排序会改变概率吗?
不会。排序只会把 18, 3, 11 显示为 3, 11, 18,不会重新抽取。
公布奖号时可以排序;如果顺序用于分配发言次序、分组优先级或座位,就不要排序。
什么时候应允许重复?
当每次尝试必须独立时,应允许重复,例如模拟十次掷骰子、下一轮允许同一号码 再次入选,或在每场活动开始时重置全部候选项。
如果要跨多轮排除已入选的人,请用随机名字转盘管理实际名单, 不要只凭记忆记录已排除的号码。
公平抽取需要预先确定的规则
先公布排除号码
在抽取前移除空座、未使用的票号和缺席者。如果区间中有很多空缺号,请列出 有效候选项并使用随机打乱列表,不要在抽取后临时废弃结果。
提前约定重抽条件
首次抽取前就应定义重抽理由,例如已确认的输入错误。为得到想要的结果而不断重抽, 会破坏随机流程。保持设置可见,方便所有人核对。
固定号码与人员的对应关系
抽取前完成抽奖券、团队成员或座位编号的分配。抽取后改号,可能让无偏的随机数 产生不公平的结果。
数字如何生成?
iGotRandom 使用浏览器的 crypto.getRandomValues。不重复模式采用虚拟的部分 Fisher–Yates,
只记录所需数量对应的位置。工具不会在内存中创建或打乱整个区间。同一区间内每个合格数字的
入选机会仍然相等。
输入和结果都在浏览器中处理,无需注册。
设置示例
| 场景 | 最小值 | 最大值 | 数量 | 不重复 | 排序 |
|---|---|---|---|---|---|
| 从 30 张票中抽 5 名候选人 | 1 | 30 | 5 | 开 | 开 |
| 从 45 人中选 6 名队员 | 1 | 45 | 6 | 开 | 关 |
| 分配 20 个座位的顺序 | 1 | 20 | 20 | 开 | 关 |
| 模拟 10 次掷骰子 | 1 | 6 | 10 | 关 | 关 |
最后一例只有在允许重复时才成立:它会在 1 到 6 中进行十次独立抽取。
立即生成不重复随机数
选择有效的区间和数量,公布排除项与重抽规则,并确认结果顺序是否重要。不重复数量取 区间大小与 100 中的较小值。然后打开 随机数生成器开始抽取。如果需要直接抽取名字或条目,请使用 随机名字转盘。