/* * sim.cpp * * Created on: Oct 12, 2010 * Author: Michael J. Fischer * for use in Yale course CPSC 427a, Fall 2010 */ #include "sim.hpp" Simulator::Simulator(Params& p) : p(p), numTrials(p.getNumTrials()), totCount(0), rnd(p.getNumPlayers(), p.getSeed()), pop(p.getAlgorithm(), p.getNumPlayers()) { } void Simulator::oneTrial() { int sender, receiver; sender = rnd.gen(); do { receiver = rnd.gen(); } while (sender == receiver); pop.oneStep(sender, receiver); } void Simulator::experiment() { totCount = 0; for (int t = 0; t < numTrials; t++) { pop.reset(); do { oneTrial(); totCount++; } while (0 < pop.getNumOnes() && pop.getNumOnes() < pop.getNumPlayers()); } } ostream& Simulator::printResults(ostream& out) const { double avgCount = (double) totCount / numTrials; out << "Experiment finished in " << avgCount << " rounds on average." << endl; return out; } ostream& Simulator::print(ostream& out) const { out << "[Simulator:\n"; out << p; out << " numTrials=" << numTrials << "\n"; out << " totCount=" << totCount << "\n"; out << "End Simulator]" << endl; return out; }