// // main.cpp // Runsofthrees // // Created by Kevin Seppi on 10/7/16. // Copyright © 2016 Kevin Seppi. All rights reserved. // #include <iostream> #include <iomanip> #include <stdlib.h> #include <time.h> using namespace std; int main(int argc, const char * argv[]) { const int MAX_FACE = 6; const int LOOKING_FOR = 3; const int NUMBER_OF_HUMAN_ROLLS = 10; const int NUMBER_OF_ROLLS = 100; const int NUMBER_OF_SIMULATIONS = 1000; int dieFace = 0; int currentRunLength = 0; int longestRunLength = 0; int totalLongestRunLength = 0; double averageLongestRunLength = 0; cout << fixed << setprecision(2); srand(static_cast <unsigned int>(time(0))); // try the following line instead and run the program twice! // srand(42); // Same sequence of random numbers every time (nothing special about 42, just a particular sequence) cout << "Count runs of: " << LOOKING_FOR << " in rolls of a die:" << endl; cout << "First you try being the random number generator, give me (all at once or one at a time) "; cout << NUMBER_OF_HUMAN_ROLLS << " int's in the range 1-6: "; for (unsigned int i = 0; i < NUMBER_OF_HUMAN_ROLLS; i++) { // Random roll of a 6 sided die cin >> dieFace; if (dieFace == LOOKING_FOR) { currentRunLength++; longestRunLength = max(longestRunLength, currentRunLength); } else { currentRunLength = 0; } } cout << endl; cout << "Summary:" << endl; cout << "The longest run of " << LOOKING_FOR << " was " << longestRunLength << endl; cout << endl; cout << "...interesting, now let's let the computer make random values:" << endl; cout << endl; cout << "Count runs of: " << LOOKING_FOR << " in rolls of a die:" << endl; currentRunLength = 0; longestRunLength = 0; cout << "Random values form a 6-sided die:" << endl; for (unsigned int i = 0; i < NUMBER_OF_ROLLS; i++) { // Random roll of a 6 sided die dieFace = rand() % MAX_FACE + 1; cout << dieFace << " "; if (dieFace == LOOKING_FOR) { currentRunLength++; longestRunLength = max(longestRunLength, currentRunLength); } else { currentRunLength = 0; } } cout << endl; cout << "Summary:" << endl; cout << "The longest run of " << LOOKING_FOR << " was " << longestRunLength << endl; cout << endl; cout << "...interesting, but what is the AVERAGE of the LONGEST runs over 1000 simulations?" << endl; cout << "Let's try it:" << endl; cout << endl; cout << "Simulating..." << endl; totalLongestRunLength = 0; for (unsigned int i = 0; i < NUMBER_OF_SIMULATIONS; i++) { currentRunLength = 0; longestRunLength = 0; for (unsigned int j = 0; j < NUMBER_OF_ROLLS; j++) { dieFace = rand() % MAX_FACE + 1; if (dieFace == LOOKING_FOR) { currentRunLength++; longestRunLength = max(longestRunLength, currentRunLength); } else { currentRunLength = 0; } } //cout << longestRunLength << endl; totalLongestRunLength += longestRunLength; } cout << endl; cout << "Summary:" << endl; averageLongestRunLength = totalLongestRunLength/(static_cast<double>(NUMBER_OF_SIMULATIONS)); cout << "The average longest run of " << LOOKING_FOR << " was " << averageLongestRunLength << endl; cout << endl; system("pause"); return 0; }Back to top