%matplotlib inline
from __future__ import print_function, division
import numpy as np
from matplotlib.pylab import *
# cervene cisla
red = [1, 3, 5, 7, 9, 12,
14, 16, 18, 19, 21, 23,
25, 27, 30, 32, 34, 36]
# cierne cisla
black = [2, 4, 6, 8, 10, 11,
13, 15, 17, 20, 22, 24,
26, 28, 29, 31, 33, 35]
# funkcia hraj berie 2 parametre:
# tosses - zoznam hodov
# account_balance - pociatocny stav uctu
# a vracia:
# account_balance - konecny stav uctu
# account_history - vyvoj stavu uctu
# funkcia pouziva metodu tak ako je opisana v clanku a aplikuje
# ju na nahodny zoznam hodov
def play(tosses, account_balance):
# account_history podrzi vsetky hodnoty uctu pocas celej hry
account_history = [account_balance]
# pociatocna uroven stavky je 1 euro
bet = 1
# stavkujeme na cervenu alebo na ciernu, zaciname na ciernej
betting_on_red = False
# vyhrali sme toto kolo?
won = False
# iterujeme cez vsetky nahodne hody
for num in tosses:
# ak prave stavkujeme na cervenu a padla cervena, vyhravame
if betting_on_red and num in red:
won = True
# ak stavkujeme na ciernu a padla cierna, tiez vyhravame
elif not betting_on_red and num in black:
won = True
# inak sme prehrali
else:
won = False
# ak sme toto kolo vyhrali
if won:
# pripiseme si vyhru
account_balance += bet
# zmenime farbu
betting_on_red = not betting_on_red
# resetujeme stavku na 1 euro
bet = 1
# ak sme prehrali
else:
# odpocitame si prehru
account_balance -= bet
# zvysime stavku na dvojnasobok
bet *= 2
# zapiseme si vysledok do historie
account_history.append(account_balance)
# ak sme klesli s uctom na alebo pod nulu, koncime
if account_balance <= 0:
return account_balance, account_history
# vratime vysledky
return account_balance, account_history
# Ak predpokladame ze clovek odohra 1 hru za 1 minutu, tak za 3 hodiny
# nahra 180 hier. Autor clanku uvadza 180-200 eur za 3 hodiny denne
# nasledujuci riadok vygeneruje 180 uniformne nahodnych cisel v rozpati
# 0 az 37, ako vo FR rulete
tosses = np.random.random_integers(0, 37, 180)
# vypiseme si najmensie a najvacsie cislo ake padlo pocas 180 tahov
print("Min number: {} Max number: {}".format(np.min(tosses), np.max(tosses)))
# spustime hru s nahodnymi hodmi a vkladom 200 eur
account_balance, account_history = play(tosses, 200)
# vypiseme si konecny stav
print("Konecny stav uctu: {}".format(account_balance))
# Nakreslime si graf priebehu
figure(figsize=(17, 5))
plot(account_history)
show()
# nakreslime si histogram cisel ake nam padali
figure(figsize=(17, 5))
hist(tosses, bins=38)
show()