ある言語から別の言語に移植するプログラムがあります。私は自分で開発している翻訳プログラムでこれをやっています。これに関連する結果として、私のシステムには多くのバグがあり、それらを見つけて修正する必要があると予想されます。各バグは多くの場所で現れる可能性が高く、それを修正すると、バグが現れるすべての場所でバグが修正されます。(私は非常に大きなレバーを持っているように感じ、短い端を押しています。私は非常に強く押していますが、物事が動くと大きく動きます。)
実行ログの差分を実行する機能があるので、元のプログラムの実行から逸脱する前に、テスト スイートをどれだけ実行できるかによって進行状況を測定しています。(BeyondCompare に感謝します。約 1M 行のファイルで十分に機能します:D)
問題は、そのランレングスを時間の関数としてプロットした場合、どのような形になると予想する必要があるかということです。(より多くの時間 == より多くのバグが削除されました)
私の最初の考えは、ポアソン分布のようなものです。ただし、各バグを修正すると、他のすべてのバグも削除されるため、それは完全に正しいとは言えません。
(ところで、これは、プログラムのデバッグがいつ終了するかを見積もることに関して、現実世界に影響を与える可能性があります。)
編集: 問題のより抽象的な声明:
範囲 [0,M] (N>>M) から選択された N 個の整数の順序付きリストが与えられ、リスト内の位置に沿って均一に分布しますが、必ずしも数値が均一に分布するとは限りません。その最後の「新しい」番号の予想される場所はどこですか? 最後から2番目はどうですか?等?