コード例 #1
0
        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);
                }
            }
        }