blob: 453af2d22207774ab68ff50f4f2fbc29751cba5b (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
/*
27 Feb 2019
Matthew Strapp
5449340
EE1301
Spring 2019
Homework 3A
One-armed Bandit Simulator
*/
#include <iostream>
#include <stdlib.h>
#include <cmath>
#include <iomanip>
using namespace std;
int spin_the_wheel(int d, int w) {
int spinOG=0, spinNew=0, win=0;
spinOG = ( (rand() % d) + 1); //Original spin is always the same
for (int i=0; i<w; i++) {
spinNew = ( (rand() % d) + 1);
if (spinOG==spinNew) {
win++;
}
}
if (win==w) { //The only win condition is if every wheel matches
return 1; //"win"
} else {
return 0; //"loss"
}
}
int main () {
srand(88888888); //Seeds the RNG of the program to a constant of eight 8s
int w, d, m, winTest; //'w' is for spinner count, 'd' is the number of options on the spinner
for (w=3; w<=6; w++) {
m=0;
for (d=9; d<=27; d++) {
m=0;
for (long n=1000000; n>0; n--) {
int winTest = spin_the_wheel(d, w);
m+=winTest;
}
double win=m;
cout << "w=" << w << ", d=" << d
<< ": Simulated probability = m/n = " << (win / 100000.0) * 100.0 << "%. " //Note that 100,000!=1,000,000
<< "Theoretical probability = " << (d / (pow(d, w))) * 100 << "%." << endl; //This is because otherwise the percentage was off by a factor of 10
d+=2;
}
}
}
|