/* * sim.cpp * * Created on: Sep 25, 2010 * Author: Michael J. Fischer * for use in Yale course CPSC 427a, Fall 2010 */ #include "sim.hpp" Simulator::Simulator(Params& p) : numRounds(p.getNumRounds()) { if (p.getFlagFileName()) // dice rolls come from file dice = new FileDice(2, 6, p.getFileName()); else // dice rolls are random dice = new RandDice(2, 6, p.getSeed()); crapsGame = new Craps(dice); } void Simulator::experiment() { crapsGame->resetCounters(); for (int i = 0; i < numRounds; i++) { crapsGame->playRound(); } } ostream& Simulator::printResults(ostream& out) const { out << "After " << numRounds << " rounds using "; dice->printSummary(out) << ":\n" << "Wins: " << crapsGame->getNumWins() << "\nProbability of win: " << (double) crapsGame->getNumWins() / numRounds << "\nExpected number of rolls: " << (double) crapsGame->getNumRolls() / numRounds << endl; return out; } ostream& Simulator::print(ostream& out) const { out << "[Simulator:\n"; out << " numRounds=" << numRounds << "\n"; out << " " << *dice << "\n"; out << " " << *crapsGame << "\n"; out << "End Simulator]" << endl; return out; }