Гост написа:Последователно се хвърля монета. Ако се падне лице, иг- рачът печели 1 лв., ако се падне гръб, губи 1 лв. Началният капитал на играча е x лв. Играта завършва или когато играчът фалира, или когато събере предварително определена сума α. Каква е вероятността играчът да се разори?
Интересувам се как нарича този вид задачи за залагане , за да разбера и от повече източници как се решава. В Интернет попаднах на проблемът gambler's ruin, но ми изглежда по- различен. Някой случайно знае името на английски?
Много хубава задача за упражнение за писане на симулации!
- Код: Избери целия код
from random import random as rand
def game(reach_win,initial_capital, N=100000):
loose_count,win_count = 0,0
for i in range(N):
money = initial_capital
while True:
if money>=reach_win:
win_count+=1
break
if money<=0:
loose_count+=1
break
if rand()<0.5: #flip win
money+=1
else:
money-=1
print(loose_count/N,loose_count,win_count,N)
return loose_count/N
for reach_win in range(10,100,10):
initial_capital = 10
print("*", game(reach_win,initial_capital), reach_win,initial_capital)
0.0 0 100000 100000
* 0.0 10 10
0.49987 49987 50013 100000
* 0.49987 20 10
0.66868 66868 33132 100000
* 0.66868 30 10
0.74927 74927 25073 100000
* 0.74927 40 10
0.79762 79762 20238 100000
* 0.79762 50 10
0.83539 83539 16461 100000
* 0.83539 60 10
0.85895 85895 14105 100000
* 0.85895 70 10
0.87587 87587 12413 100000
* 0.87587 80 10
0.89006 89006 10994 100000
* 0.89006 90 10
In [223]: game(100,50)
0.50192 50192 49808 100000
Out[223]: 0.50192
In [224]: game(10,5)
0.50059 50059 49941 100000
Out[224]: 0.50059