我生成了一个包含 3 个随机数的列表,每个随机数的总和为 1。我想评估随机性的质量。评估这种随机性的最佳机制是什么?例如我的随机数是。知道我可以使用哪些工具来做这个吗?
0.4 0.5 0.1
0.2 0.3 0.5
0.6 0.2 0.2
0.5 0.2 0.3
0.2 0.4 0.4
0.2 0.1 0.7
0.3 0.3 0.4
0.8 0.1 0.1
0.1 0.5 0.4
0.4 0.4 0.2
我生成了一个包含 3 个随机数的列表,每个随机数的总和为 1。我想评估随机性的质量。评估这种随机性的最佳机制是什么?例如我的随机数是。知道我可以使用哪些工具来做这个吗?
0.4 0.5 0.1
0.2 0.3 0.5
0.6 0.2 0.2
0.5 0.2 0.3
0.2 0.4 0.4
0.2 0.1 0.7
0.3 0.3 0.4
0.8 0.1 0.1
0.1 0.5 0.4
0.4 0.4 0.2
假设您将数字放在矩阵中
x = [...
0.4 0.5 0.1
0.2 0.3 0.5
0.6 0.2 0.2
0.5 0.2 0.3
0.2 0.4 0.4
0.2 0.1 0.7
0.3 0.3 0.4
0.8 0.1 0.1
0.1 0.5 0.4
0.4 0.4 0.2];
x(i,:)第 i 行在哪里(你是 3D 随机变量)。您必须计算平均行(我使用的是 matlab 表示法)
x_mean = mean(x);
disp(x_mean);
然后你可以计算残差矩阵(你的行和平均行之间的差异)
res = x - repmat(x_mean,10,1);
并且该矩阵res应将行分布为均值为零的 3D 高斯变量(或均匀分布,或任何用于生成样本的随机分布)。
你的变量之间有一些依赖关系,我不知道如何处理。在这里CrossValidated提出这个问题可能是个好主意。
您所说的“随机性质量”是什么意思?简单来说,如果要查看生成的一组数字是否足够随机,它们的均值应该接近于 0,即纯高斯分布。请注意,仅当您的编号足够大时,这才是一个不错的选择。随机样本,在这种情况下,平均值接近零表明 rand 生成器做得很好。
换句话说,纯随机数彼此不相关,尽管它在实践中几乎从未发生过。
可能还有其他数学上严格的方法来测试它,但对于简单的任务,这就足够了。