私は非常に厳格なテスト駆動開発 JUnit の雰囲気の中で自分自身のトレーニングに取り組んでいます。そのような雰囲気の中で、FOR ランダム性をテストするための最良の方法は何かを見つけようとしています。たとえば、私はランダム化されたキュー配列の実装に取り組んでおり、アイテムをキューに入れ、すぐにそのアイテムを配列上のインデックス 0-(n-1) のアイテムに切り替えます (したがって、ランダムなアイテムがキューから出てくるのをシミュレートします)デキュー)。これが私の enqueue メソッドからのコード例です。
int randIndex = StdRandom.uniform(size); // generate random index to swap with last item
Item tmp = randArray[randIndex];
randArray[size] = item;
randArray[randIndex] = randArray[size]; //perform swap to create a random item for dequeue
randArray[size] = tmp;
size++;
いくつかのテストを実行して、エンキュー メソッドが実際にキュー変数を配列内の他のインデックスにランダムに切り替えていることを確認したいと思います。通常は、一連の enqueue() 呼び出しを反復処理して結果を出力するコードを Main() メソッドにスローし、それがランダムに「感じられる」ことを確認します。
しかし、私が言ったように、私はこれを非常に厳格な単体テスト フレームワークで行いたいと考えています。JUnit はほぼ独占的に assert ステートメントを使用しているようですが、モンテカルロ型のものを実行して特定のイプシロンに対して平均をチェックしない限り、何に対して何をアサートする必要があるのか わかりませんが、それはテストには少し多すぎるようですそんな簡単な方法。