-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathincome_planner.py
35 lines (23 loc) · 969 Bytes
/
income_planner.py
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
import random
state_chains = [
{'probability': 1, 'values': [0]}
]
moves = [(1000, 0.5), (300, 0.9), (400, 0.7)]
per_move_decrease = 1
for balance_inrease, increase_probability in moves:
new_state_chains = []
for state_chain in state_chains:
last_value = state_chain['values'][-1]
# success
success_chain = {
'probability': state_chain['probability'] * increase_probability,
'values': state_chain['values'] + [last_value + balance_inrease - per_move_decrease],
}
# failure
failure_chain = {
'probability': state_chain['probability'] * (1 - increase_probability),
'values': state_chain['values'] + [last_value - per_move_decrease],
}
new_state_chains.extend((success_chain, failure_chain))
state_chains = new_state_chains
print sum([chain['probability'] for chain in state_chains if all(value >= 0 for value in chain['values'])])