private void RunSimulation() { int coinFlipsCount = Convert.ToInt32(txtSimulationRuns.Text); double probability = Convert.ToDouble(txtProbability.Text); Coin.FACE simulationface = GetFaceValueFromFormControl(cboSimulationFace); Coin.FACE weightedface = GetFaceValueFromFormControl(cboCoinFace); Coin coin = new Coin(probability, weightedface); Simulation simulation = new Simulation(coin, coinFlipsCount, simulationface); Result result = simulation.Run(); OutputResults(result); }
public Result Run() { Result result = new Result(coin, sample, face); FlipHistory flipHistory = new FlipHistory(); int consecutiveCount = 0; for (int i = 0; i < sample; i++) { Coin.FACE face = coin.Flip(); flipHistory.Log(face); consecutiveCount = (face == this.face) ? consecutiveCount + 1 : 0; result.IncrementCountsUpToValue(consecutiveCount); Result.ResultType type = (face == Coin.FACE.HEADS ? Result.ResultType.HEADS : Result.ResultType.TAILS); result.AddCount(type); } result.AddHistory(flipHistory); return(result); }
public void Log(Coin.FACE face) { if (history.Count == 0) { history.Add(new FaceCount(1, face)); } else { int index = history.Count - 1; FaceCount last = history[index]; if (last.GetFace().Equals(face)) { last.IncrementCount(); history[index] = last; } else { history.Add(new FaceCount(1, face)); } } }
public Result(Coin coin, int sample, Coin.FACE face) { this.coin = coin; this.sampleSize = sample; this.face = face; }
public Simulation(Coin coin, int sample, Coin.FACE face) { this.coin = coin; this.sample = sample; this.face = face; }
public FaceCount(int count, Coin.FACE face) { this.count = count; this.face = face; }