这个工具能做什么
本生成器会根据你设定的自由度(v),从学生 t 分布中抽取一组伪随机数。t 分布是一种钟形、对称的分布,但相比标准正态分布,它的尾部更"厚"。当我们要从一个方差未知的正态总体中、用小样本去估计均值时,t 分布会自然出现,它也是 t 检验和置信区间的理论基础。随着自由度 v 不断增大,t 分布会逐渐逼近标准正态分布 \(\mathcal{N}(0,1)\)。这是一个纯数学工具,不涉及任何地区性假设。
使用方法
输入自由度 v(任意大于 0 的实数,默认值为 2),以及你想要生成的随机数个数(1 到 1000 之间的整数,默认值为 10)。点击计算,工具就会返回一组全新的 t 分布随机数。由于底层使用的是随机均匀抽样,每次运行得到的数值都不相同,但它们始终服从同一个目标分布。
公式详解
该分布的概率密度函数为 \( f(x,v) = (1 + x^{2}/v)^{-(v+1)/2} \),再除以 \( \sqrt{v} \) 乘以 \( B(1/2,\, v/2) \),其中 \( B \) 表示 Beta 函数。为了高效地抽样,我们采用经典的构造方法:先从标准正态分布中抽取 Z,再从自由度为 v 的卡方分布中抽取 C,那么 $$ T = Z \cdot \sqrt{\frac{v}{C}} $$ 就恰好服从 t 分布。在内部实现中,Z 由 Box-Muller 变换得到,C 由 \( \text{Gamma}(v/2,\, 2) \) 抽样器(Marsaglia-Tsang 算法)生成,对任意实数 \( v > 0 \) 均成立。
实例演算
取 \( v = 2 \),假设某次运行得到 \( Z = 0.50 \),卡方抽样值 \( C = 1.20 \)。那么 $$ T = 0.50 \cdot \sqrt{\frac{2}{1.20}} = 0.50 \cdot 1.29099 = 0.6455 $$ 第二组 \( Z = -1.10 \)、\( C = 3.00 \) 得到 \( T = -0.8982 \);第三组 \( Z = 0.20 \)、\( C = 0.40 \) 得到 \( T = 0.4472 \)。这三个数值正好演示了 \( \text{count} = 3 \) 时的一份样本。
常见问题
为什么有些数值特别大?当 \( v \le 1 \) 时均值不存在,当 \( v \le 2 \) 时方差为无穷大,因此出现绝对值很大的数值是正常现象,并非错误。
为什么每次运行结果都不一样?每次抽样都使用全新的随机均匀数,所以每次得到的列表都不同,但它们始终服从同一个 t 分布。
如果 v 非常大会怎样?此时该分布的表现几乎与标准正态分布 \(\mathcal{N}(0,1)\) 完全一致。