-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathmontecarlo8.py
More file actions
145 lines (113 loc) · 3.23 KB
/
montecarlo8.py
File metadata and controls
145 lines (113 loc) · 3.23 KB
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
import random
import matplotlib
import matplotlib.pyplot as plt
import time
from matplotlib import style
style.use("ggplot")
'''
Since we will be comparing bettors, and eventually maybe have a handful,
it would be wise to just set the starting funds, wager size, and wager
count ahead of time globally.
'''
sampleSize = 100
startingFunds = 10000
wagerSize = 1000
wagerCount = 1000
def rollDice():
roll = random.randint(1,100)
if roll == 100:
return False
elif roll <= 50:
return False
elif 100 > roll >= 50:
return True
def doubler_bettor(funds,initial_wager,wager_count):
value = funds
wager = initial_wager
wX = []
vY = []
currentWager = 1
previousWager = 'win'
previousWagerAmount = initial_wager
while currentWager <= wager_count:
if previousWager == 'win':
if rollDice():
value += wager
wX.append(currentWager)
vY.append(value)
else:
value -= wager
previousWager = 'loss'
previousWagerAmount = wager
wX.append(currentWager)
vY.append(value)
if value < 0:
currentWager += 10000000000000000
elif previousWager == 'loss':
if rollDice():
wager = previousWagerAmount * 2
value += wager
wager = initial_wager
previousWager = 'win'
wX.append(currentWager)
vY.append(value)
else:
wager = previousWagerAmount * 2
value -= wager
previousWager = 'loss'
previousWagerAmount = wager
wX.append(currentWager)
vY.append(value)
if value < 0:
currentWager += 10000000000000000
currentWager += 1
# this guy goes cyan #
plt.plot(wX,vY,'c')
'''
xx = 0
broke_count = 0
while xx < 1000:
doubler_bettor(10000,100,100)
xx+=1
print 'death rate:',(broke_count/float(xx)) * 100
print 'survival rate:',100 - ((broke_count/float(xx)) * 100)
plt.axhline(0, color = 'r')
plt.show()
time.sleep(555)
'''
'''
Simple bettor, betting the same amount each time.
'''
##### color#
def simple_bettor(funds,initial_wager,wager_count,color):
####
value = funds
wager = initial_wager
wX = []
vY = []
currentWager = 1
while currentWager <= wager_count:
if rollDice():
value += wager
wX.append(currentWager)
vY.append(value)
else:
value -= wager
wX.append(currentWager)
vY.append(value)
###add me
if value < 0:
currentWager += 10000000000000000
currentWager += 1
# this guy goes green #
plt.plot(wX,vY,color)
x = 0
while x < sampleSize:
simple_bettor(startingFunds,wagerSize,wagerCount,'k')
simple_bettor(startingFunds,wagerSize*2,wagerCount,'c')
#doubler_bettor(startingFunds,wagerSize,wagerCount)
x+=1
plt.axhline(0, color = 'r')
plt.ylabel('Account Value')
plt.xlabel('Wager Count')
plt.show()