public NumberOfErrorsProbabilityScale(NumberOfErrorsProbabilityCalculator calculator, double accuracy) { List <double> scale = new List <double>(); List <double> probabilities = new List <double>(); double sum = 0; int numberOfErrors = 0; while (1 - sum > accuracy && numberOfErrors <= calculator.BitsPerBlock) { var probabability = calculator.GetProbabilityOfOccuringErrorsInQuantity(numberOfErrors); probabilities.Add(probabability); sum += probabability; scale.Add(sum); numberOfErrors++; } _scale = scale.ToArray(); _probabilities = probabilities.ToArray(); }
static void Main(string[] args) { var pSet = new NumberOfErrorsProbabilityCalculator(1000, 0.01); var pScale = new NumberOfErrorsProbabilityScale(pSet, 0.001); var experimentator = new Experimentator(pScale); foreach (int n in experimentator.MakeExperiments_ReturnNumberOfErrors(50000)) { Console.WriteLine(n); } /* * foreach (var p in pScale.Probabilities) * { * Console.WriteLine(p); * } */ }