public void GenerateKMinesOnGridTest(int m, int n, int k) { // Arrange var counts = new int[m, n]; int total = m * n * 20000; for (int i = 0; i < total; i++) { // Act List <(int, int)> results = Facebook.GenerateKMinesOnGrid(m, n, k); // Assert Assert.AreEqual(k, results.Count); foreach ((int r, int c) in results) { counts[r, c]++; } } // Further Assert double expectedProbability = (double)k * 100 / (m * n); double threshold = 0.5; for (int r = 0; r < m; r++) { for (int c = 0; c < n; c++) { double probability = (double)counts[r, c] * 100 / total; Console.WriteLine($"Probability of ({r}, {c}) is {Math.Round(probability, 2)}%."); Assert.AreEqual(expectedProbability, probability, threshold); } } }