我正在构建将由多个用户同时使用的软件组件。在当前时间点,这些组件是已知的 bad。也就是说,如果我模拟多个用户同时与每个组件交互足够长的时间,我知道该组件将失败。在模拟结束之前,我无法确定是否发生了故障。
模拟的结果给了我两件事:
- 成功或失败指示器,以及
- 错误发生的实际次数(虽然我不知道在模拟中错误实际发生的时间)
我也不知道错误有什么样的分布,因为更改应用程序以在故障发生时记录故障可能会改变分布本身。
我的目标是确定可用于在目标置信区间 CI 处实现目标置信水平 CL 的最小样本量,以便我可以自动让这些组件测试必要的迭代次数。然后,我将修复组件,但保留自动化组件测试,让我确信组件在未来不会损坏。
在给定置信区间 CI% 的情况下,如何确定模拟器需要运行的最小迭代次数(样本)才能重现置信水平 CL% 的故障?或者,如果我不能将迭代次数等同于样本,我可以采取什么方法来实现上述目标?
如果有帮助,我可以在任意次数的迭代中运行模拟器任意次数,以获得足够的样本量。
由于我没有足够的统计数据来确切地知道要问什么问题或要做什么研究,所以让我解释一下我目前的计划:
- 运行模拟器进行 X 次迭代
- 如果模拟器没有失败,请使用较大的 X 重复步骤 1,直到模拟失败。
- (因为模拟在 X 次迭代中失败)用 X 次迭代运行模拟器 1000 次,以确定我怀疑类似于置信水平的东西。(即,如果它在 1000 次中失败了 950 次,我会假设置信水平为 95%。)
- 如果置信水平不够高,请从第 1 步开始重复使用较大的 X(假设我将获得更好的置信水平)。
我怀疑上述内容在数学上是否合理,并想解决这个问题。
感觉就像未知的分布使得无法确定每次迭代失败的可能性。我也觉得我可以利用模拟中发生错误的实际次数来发挥我的优势——也许是通过计算重复模拟的方差。
数据:
# iterations # failed simulations / 1000 simulations
2^n (0 <= n <= 6) 0
128 662
256 837
512 916
1024 974
2048 734
4096 779
8192 891
16384 953
32768 968
65536 991
131072 999
2^n (n >= 18) 1000
如您所见,在 2048 次迭代中,模拟失败的次数明显少于 1024 次迭代时的失败次数,这对我来说表明存在较大的差异。
我在一般数学方面相当有能力,但在统计方面却一无所知,因此在这个方向上调整答案会有所帮助。