Jump to content
Sign in to follow this  
Che

[PYTHON] Beat the Roulette for fun !

Recommended Posts

European-Roulette-Table.png

Mi-a venit o idee azi dimineata, jucandu-ma pe telefon, si as vrea sa o pun in aplicare, scopul fiind unul de fun/distractie/amuzament/sa mai invat programare/imi place etc.

Jocul era unul cu ruleta. (Ruleta de gambling.)

Aici e codul scris de mine:

import random

# toate numerele (istoric)
history_nums = []
# 1 = impar, 2 = par, 0 = None
history_impare_pare = []
# 0 = None, rosu = 1, negru = 2
history_rosu_negru = []
# 1 = prima linie, 2 = a doua linie, 3 = a treia linie, zero (0) = None
history_line = []
# first half = 1-18, second half = 19-36, 0 = None
# Se va adauga 1 pentru prima jumatate si 2 penttru a doua jumatate si zero pentru zero ca zero nu e in niciuna.
history_first_half_second_half = []
# primele 1-12 (prima treime) =1, a doua treime = 2 si a treia treime = 3, if zero = None = 0
history_treimi = []

def spin_roulette():
  number = random.choice(range(37))
  rosu = [1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36]
  first_line = [3,6,9,12,15,18,21,24,27,30,33,36]
  second_line = [2,5,8,11,14,17,20,23,26,29,32,35]
  third_line = [1,4,7,10,13,16,19,22,25,28,31,34]
  history_nums.append(number) 
  if number == 0:
    history_impare_pare.append(number)
    history_rosu_negru.append(number)
    history_line.append(number)
    history_first_half_second_half.append(number)
    history_treimi.append(number)
    return
  elif number in rosu:
    history_rosu_negru.append(1)
  else:
    history_rosu_negru.append(2)
  if number <=18:
    history_first_half_second_half.append(1)
  else:
    history_first_half_second_half.append(2)
  if number % 2 == 0:
    history_impare_pare.append(2)
  else:
    history_impare_pare.append(2)
  if number >=1 and number <=12:
	  history_treimi.append(1)
  elif number >=13 and number <=22:
	  history_treimi.append(2)
  else:
	  history_treimi.append(3)
  if number in first_line:
    history_line.append(1)
  elif number in second_line:
    history_line.append(2)
  elif number in third_line: # se poate si simplu cu else
    history_line.append(3)
  return



  

    

 

Reguli:

  1. Nu aveti voie sa modificati functia spin_roulette().
  2. Nu aveti voie sa va folositi de acel bug in functia random (exista, am citit despre el niste articole foarte frumoase).
  3. Nu aveti voie sa folositi o alta functie sau clasa sau librarie care modifica functia spin_roulette sau/si se foloseste de acel bug din functia random.
  4. Aveti voie sa va folositi de functia spin_roulette() de exemplu asa:
  5. for i in range(100):
      spin_roulette()
    print history_line
  6. Aveti voie sa va folositi de oricare din variabilele globale (cele care incep cu history_) dar fara a le modifica in vreun fel.

 

Astea fiind spuse:

  1. Puteti scrie orice fel de algoritm vreti voi (AI sau nu) care sa "ghiceasca" cel mai bine posibil ce numar/linie/culoare/treime/linie/par/impar etc. urmeaza sa iasa ? (printand si procentul de succes pentru fiecare in parte )
  2. Folosindu-va de "payouts" de aici https://www.gamblingonline.com/roulette/strategy/payouts/  puteti scrie un algoritm (AI sau nu) care sa faca gaseasca cea mai buna strategie cu care sa faca cat mai multi bani virtuali, pentru fiecare numar/linie/culoare/treime/linie/par/impar etc. care urmeaza sa iasa ? (printand si procentul de succes pentru fiecare in parte)

Aveti vreo idee cum s epoate face asa ceva ?

Multumesc mult de tot !

P.S. Este vorba doar de ruleta europeana cu un singur zero, nu cea USA care are doi de zero.

@sergiu4995 @Nytro @theandruala @dancezar @tjt @Wav3 @jetus @Turry @BiosHell @gigiRoman @yoyois @MrGrj 

Imi cer scuze de tag, am dat si eu tag celor care am vazut ca au mai postat pe aici cate ceva legat de AI.

P.S.2: Se poate cu algoritmi genetici ? Cum anume ?

P.S.3: Nu credeti ca vreau sa castig la ruleta, de fapt as vrea, dar va dati seama ca un algoritm de ruleta nu foloseste un simplu random.choice() (mai ales ca random e cu bug) ci e mult mai avansat de atat. Problema asta e mai mult asa de fun, de curiozitate, ca mi se pare frumos sa vad cum ar putea exista o rezolvare la asa ceva, de asta. Scuze inca o data de tag !

Multumesc !

Share this post


Link to post
Share on other sites

Deci: 1 la mana, eu nu inteleg de ce vrei sa facem asta, probabil vrei sa-l utilizezi pe anumite site-uri gen: netbet sau superbet etc. (nu ma prea pricep). 2 la mana, daca este asa, trebuie sa intelegi ca acele siteuri utilizeaza anumite biblioteci "random", care sunt diferite de ce gasesti tu in biblioteca python .  Deci, daca cineva ar gasi o metoda care sa prezica ce culoare va iesi, acea metoda va functiona doar pentru clasa "random" din python, daca o sa-l folosesti pe alte siteuri nu cred ca va da randament, parerea mea.

Share this post


Link to post
Share on other sites
6 minutes ago, atemus said:

Deci: 1 la mana, eu nu inteleg de ce vrei sa facem asta, probabil vrei sa-l utilizezi pe anumite site-uri gen: netbet sau superbet etc. (nu ma prea pricep). 2 la mana, daca este asa, trebuie sa intelegi ca acele siteuri utilizeaza anumite biblioteci "random", care sunt diferite de ce gasesti tu in biblioteca python .  Deci, daca cineva ar gasi o metoda care sa prezica ce culoare va iesi, acea metoda va functiona doar pentru clasa "random" din python, daca o sa-l folosesti pe alte siteuri nu cred ca va da randament, parerea mea.

Ai raspunsurile deja in primul post, citeste-l pana la capat. Inclusiv P.S. ca si acolo zic de ce si cum.

Pe scurt, exact cum ai zis si tu, tot asa am zis si eu ca nu se poate folosi pentru vreo ruleta a vreunui cazinou oricare ar fi el fiindca nu foloseste random care e predictibila din cauza unui bug.

Prin urmare, vreau doar asa, in scop pur demonstrativ si de curiozitate, ca sa stiu si eu cum s-ar putea face acest lucru, FARA sa te foloesti de bugul din random sau de vreo alta functie care face asta sau de functia care genereaza (spin_roulette()) din codul meu.

Fara vreun scop anume, doar de curiozitate, daca se poate si daca vreti si daca aveti timp. Sunt doar curios sa vad cam cum si daca s-ar putea gasi o rezolvare la o astfel de problema si care ar avea cea mai mare rata de succes.

Share this post


Link to post
Share on other sites

Banuiesc ca daca adaug linia asta oriunde in cod, dar in afara functiei spin_roulette, desigur, pot prezice viitoarele "rotiri"?


random.seed(1)

 

Nu pare sa incalce niciuna din regulile scrise de tine.

  • Thanks 1

Share this post


Link to post
Share on other sites

Pai daca nu avem voie sa ne folosim de buguri din random ce plm putem sa facem?

 

Daca consideri ca random.choice e random atunci nu exista niciun challenge de programare. Castigurile si strategiile se pot calcula folosind ecuatiile de la probabilitati in clasa a 9.

Dar ai sa observi ca se poate demonstra ca nu exista nicio strategie care sa ajunga pe castig.

 

Lasa neuronalele genetice ca nu e asa usor, tac-pac: "neuroni cuantici" si faci bani la rulete.

  • Upvote 2

Share this post


Link to post
Share on other sites
4 hours ago, yoyois said:

Pai daca nu avem voie sa ne folosim de buguri din random ce plm putem sa facem?

 

Daca consideri ca random.choice e random atunci nu exista niciun challenge de programare. Castigurile si strategiile se pot calcula folosind ecuatiile de la probabilitati in clasa a 9.

Dar ai sa observi ca se poate demonstra ca nu exista nicio strategie care sa ajunga pe castig.

 

Lasa neuronalele genetice ca nu e asa usor, tac-pac: "neuroni cuantici" si faci bani la rulete.

:))))))))))))))))))

random_number.png

  • Upvote 6

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×