59 lines
1.6 KiB
C
59 lines
1.6 KiB
C
|
#include <stdio.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <time.h>
|
||
|
#include <stdbool.h>
|
||
|
|
||
|
struct Simulation {
|
||
|
double betsize;
|
||
|
double STARTING_BANKROLL;
|
||
|
double bankroll;
|
||
|
int attempts;
|
||
|
};
|
||
|
|
||
|
int roll() {
|
||
|
return (random() % 7) + 1;
|
||
|
}
|
||
|
|
||
|
double handle(int player, int house) {
|
||
|
int diff = house - player;
|
||
|
if (diff >= 1) {return 0;}
|
||
|
else if (diff == -6) {return 2;}
|
||
|
else if (diff == 0) {return 0;}
|
||
|
else {return 1.5;}
|
||
|
}
|
||
|
|
||
|
bool calculate(struct Simulation* simulation) {
|
||
|
if (simulation->bankroll >= simulation->betsize) {
|
||
|
simulation->bankroll -= simulation->betsize;
|
||
|
int player_roll = roll();
|
||
|
int house_roll = roll();
|
||
|
double modifier = handle(player_roll, house_roll);
|
||
|
simulation->bankroll += (modifier * simulation->betsize);
|
||
|
simulation->attempts++;
|
||
|
return false;
|
||
|
} else {return true;}
|
||
|
}
|
||
|
|
||
|
void run(struct Simulation* simulation, int attempts) {
|
||
|
for (int i = 0; i < attempts; i++) {
|
||
|
bool bankrupt = calculate(simulation);
|
||
|
if (bankrupt) {
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
int main() {
|
||
|
srandom(time(NULL));
|
||
|
struct Simulation new_simulation;
|
||
|
new_simulation.betsize = 20;
|
||
|
new_simulation.STARTING_BANKROLL = 5000000000;
|
||
|
new_simulation.bankroll = new_simulation.STARTING_BANKROLL;
|
||
|
new_simulation.attempts = 0;
|
||
|
run(&new_simulation, 2147483647);
|
||
|
printf("Starting Bankroll: %f\n", new_simulation.STARTING_BANKROLL);
|
||
|
printf("Current Bankroll: %f\n", new_simulation.bankroll);
|
||
|
printf("Finished after %d attempts and with a betsize of: %f\n", new_simulation.attempts, new_simulation.betsize);
|
||
|
return 0;
|
||
|
}
|