这个工具能做什么
整数均匀随机数生成器会在你设定的闭区间内,均匀抽取并生成一组随机整数。所谓"均匀",是指上下界之间的每一个整数被抽中的概率完全相等。你可以自行决定生成多少个数字,以及同一个数值能否重复出现。它适用于彩票选号、骰子和游戏点数、从数据集中随机抽样、分配编号 ID、A/B 测试分组,以及统计学课堂演示等多种场景。
如何使用
在"起始范围"中填入下界,在"至"中填入上界(可取 1 到 100000 之间的任意整数)。在"数量"中设置你想要生成的数字个数(1 到 100)。选择"允许"即可出现重复值(有放回抽样),选择"不允许"则保证结果各不相同(无放回抽样)。如果你不小心把上下界填反了,工具会自动帮你调换顺序。
计算公式详解
区间 \([\text{lo}, \text{hi}]\) 共包含 \(N = \text{hi} - \text{lo} + 1\) 个不同的整数。单次抽取的公式为 $$r = \text{lo} + \left\lfloor U \times N \right\rfloor,$$ 其中 \(U\) 是 \([0, 1)\) 区间内的均匀随机实数。将 \(U\) 乘以 \(N\) 后取下整,得到一个 \(0\) 到 \(N-1\) 之间的整数,再加上 \(\text{lo}\) 进行平移。这样就保证了每一个候选值出现的概率恰好为 \(1/N\)。当允许重复时,工具会针对每个需要生成的数字独立重复上述抽取过程。当不允许重复时,工具会不断抽取并丢弃已经选过的数值,直到凑齐所需数量的不重复数字为止——因此要求生成数量不能超过 \(N\)。
实例演示
范围 1 到 6,生成数量 5,允许重复:每次抽取为 $$r = 1 + \left\lfloor U \times 6 \right\rfloor,$$ 相当于掷一颗六面骰子。可能的结果是 4、1、6、4、2(其中 4 出现了两次,这是允许的)。如果不允许重复,则会得到五个互不相同的数值,例如 3、5、1、6、2。而想从 1 到 6 中抽出 7 个不重复的数字是不可能的,因为这个范围内总共只有六个整数。
常见问题
为什么每次得到的结果都不一样?本生成器是非确定性的,每次运行都会重新抽取全新的随机值,因此输出本就会有所变化,这是设计使然。
最小值和最大值可以相等吗?可以。如果两者相同,则 \(N = 1\),唯一可能的结果就是这个数本身。
如果我要求的不重复数字超过了实际存在的个数会怎样?在"不允许"模式下,由于没有足够多的不同整数来满足你的要求,工具会报错提示。