public void CoinFlipTest() { var uut = new RandomSource(); var iterations = 1000; var coinFlipRatios = new List <double>(); while (iterations-- > -1) { var flips = Enumerable.Range(0, 200).Select(_ => uut.CoinFlip()).ToList(); var ratio = flips.Count(r => r) / (double)flips.Count; coinFlipRatios.Add(ratio); Assert.True(ratio > 0.3, ratio.ToString("0.00%")); Assert.True(ratio < 0.7, ratio.ToString("0.00%")); } var average = coinFlipRatios.Average(); Assert.True(average > 0.49, average.ToString("0.00%")); Assert.True(average < 0.51, average.ToString("0.00%")); }