Algebird で Twitter の HyperLogLog の実装を使用しています。数値 N と、HyperLogLog を使用して徐々に増加するコレクションの現在のサイズを推定し、それが N より大きいか小さいかをテストするシステムのチェックが与えられた場合、このチェックをテストし、 HyperLogLog を呼び出すコードが正しければ、ほぼ確実に合格するのでしょうか? テスト対象のシステムは非決定論的です。その理由の 1 つは、マルチスレッドであるためです。
私が最初に考えたのは、このユース ケースで信頼できる統合テストを作成する正しい方法は、「標準を破棄する」ことであるということでした。では、HyperLogLog がアイテムの総数を N を超えると推定するためにエンドポイントにポストするのに十分なアイテム (M) の数は、たとえば >= 0.999999 の確率で?
または、より良いアプローチがありますか?
標準のエラー境界は設定可能ですが、それは、たまに目にする可能性のある最大のエラー境界を直接教えてくれるわけではありません - これは、マスター上でランダムに失敗した CI ビルドが時間と無駄の原因となるのを避けるために私が気にかけていることです。 -引っ張る!
また、テストで乱数データを生成する方法が、関連する点で一様分布の乱数データを生成しない可能性があり、確率計算に重大な影響を与える可能性があることも懸念しています.