/* Name: CaveDice Copyright: 2019 Author: Daniel R. Collins Date: 12/09/19 22:48 Description: Check average areas generated by my d6 cave dice method. Confirms algebraic E(areas) = 6. */ #include #include #include using namespace std; const int NUM_TRIALS = 10000000; // Roll a die int roll(int sides) { return rand() % sides + 1; } // Generate areas for one tunnel (recursive) int areasInTunnel () { switch (roll(6)) { case 1: case 4: case 6: return 1; case 2: case 3: return 1 + areasInTunnel(); case 5: return 1 + areasInTunnel() + areasInTunnel() + areasInTunnel(); } } // Main driver function int main(int argc, char *argv[]) { srand(time(0)); int totalAreas = 0; for (int i = 0; i < NUM_TRIALS; i++) { totalAreas += areasInTunnel(); } float avg = (float) totalAreas / NUM_TRIALS; cout << "Average areas: " << avg << endl; system("PAUSE"); return EXIT_SUCCESS; }