Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何测试某些数字是否沿间隔均匀分布?_C++_Algorithm_Statistics_Distribution - Fatal编程技术网

C++ 如何测试某些数字是否沿间隔均匀分布?

C++ 如何测试某些数字是否沿间隔均匀分布?,c++,algorithm,statistics,distribution,C++,Algorithm,Statistics,Distribution,我正在寻找一种算法(最好使用c++中的库)或一些想法来告诉我某些数字在统计上是否以统一的方式分布在一个区间内。假设我有两个字符串:第一个是无错误的,第二个在某些点上有一些错误。我想检查字符串中错误的位置是否具有统计意义 考虑下面的例子。在第一种情况下,错误是均匀分布的,在第二种情况下,它们都在字符串的末尾,这应该是我的算法给出的一些警报 error-free string: 0110110101010110101 (3 errors occur at pos:5,12,15 ) errone

我正在寻找一种算法(最好使用c++中的库)或一些想法来告诉我某些数字在统计上是否以统一的方式分布在一个区间内。假设我有两个字符串:第一个是无错误的,第二个在某些点上有一些错误。我想检查字符串中错误的位置是否具有统计意义

考虑下面的例子。在第一种情况下,错误是均匀分布的,在第二种情况下,它们都在字符串的末尾,这应该是我的算法给出的一些警报

 error-free string: 0110110101010110101 (3 errors occur at pos:5,12,15 )
 erroneous string : 0110010101000100101
sedond示例:

 error-free string: 0110110101010110101 (3 errors occur at pos:17,18,19 )
 erroneous string : 0110110101010110010
我可以说第一个数据中的错误是正常的,但第二个数据中的错误不是


到目前为止,我的想法是:假设字符串长度为100,我想将字符串拆分为相等的容器。我选择10个大小为10的箱子。然后我看字符串中的错误总数,我们可以假设为10。我希望在每个箱子中看到1个错误。现在我计算我的观察值与我的期望值之间的统计距离。有人知道这个方法是否正确吗?如果有效,每个垃圾箱应该有多大。是否也应该取决于错误的数量?

您建议的方法是,将字符串拆分为多个存储单元,希望看到错误的数量或多或少均匀地分布在存储单元之间,而对“每十个位置都有一个错误”这样的模式视而不见。我认为你需要一个更一般的方法来区分错误的发生与位置无关的情况,以及错误发生的位置有某种模式的情况

换句话说,我认为你实际上在寻找一种方法来测量二进制字符串的随机程度,或者更准确地说,无模式程度。字符串无模式的最终数学定义是字符串的,定义为输出字符串的最短程序的长度。可悲的是,Kolmogorov复杂性是不可计算的

计算二进制字符串无模式性的一种可行方法是使用。可以使用运行时间
O(n logn)
执行测试,其中
n
是字符串的长度。但是,在我看来,在C++中没有准备好使用的测试实现。p>
假设为了易于实现,您愿意在测试的健壮性上做出一点妥协,那么可以使用以下方法:测量字符串的无模式性,只需一个内容为字符串的文件,然后检查压缩比。压缩越差,字符串就越没有图案。该方法依赖于gzip包含Kolmogorov复杂性的某些方面这一事实。特别是,一些易于检测的模式的存在提高了压缩比。

请参阅查找卡方检验。记住,从本质上讲,统计测试可能有误报和漏报。直方图+直方图上常数的最小二乘拟合如何?卡方检验会告诉你你的分布有多好,因为它模拟了一个常数。也许Kolmogorov复杂度是不可计算的,但a是可计算的。如果你想进行阿达玛谱测试,请使用快速沃尔什变换,而不是FFT@pjs,谢谢你的相关评论。我根本不知道科尔莫戈罗夫-斯米尔诺夫试验的存在。