-
Notifications
You must be signed in to change notification settings - Fork 0
/
essentiel.py
102 lines (83 loc) · 3.33 KB
/
essentiel.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
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
import numpy as np
import numpy.random as rd
def tirage_num(n): # renvoie une liste de n nombres tirés aléatoirement entre 0 et 36
return rd.randint(0, 36, n)
def rouge_noir(nb): # detecte si un nb correcpond à une case rouge, noir ou verte
rouge = [1, 3, 5, 7, 9, 12, 14, 16, 18, 19, 21, 23, 25, 27, 30, 32, 34, 36]
noir = [2, 4, 6, 8, 10, 11, 13, 15, 17, 20, 22, 24, 26, 28, 29, 31, 33, 35]
if nb in rouge:
return 1
elif nb in noir:
return 2
else:
return 0
def tiers(nb): # renvoie le tiers auquel appartient le nombre
tiers_1 = [3,6,9,12,15,18,21,24,27,30,33,36]
tiers_2 = [2,5,8,11,14,17,20,23,26,29,32,35]
tiers_3 = [1,4,7,10,13,16,19,22,25,28,31,34]
if nb in tiers_1:
return 1
elif nb in tiers_2:
return 2
elif nb in tiers_3:
return 3
else:
return 0
def pair_impair(nb): # renvoie 0 si pair et 1 si impair
if nb % 2 == 0:
return 0
else:
return 1
def victoire_pair_rouge(nb, argent): # on considère que l'on joue à chaque partie 1€ sur rouge et 1€ sur pair
argent -= 2
if(rouge_noir(nb) == 1 and pair_impair(nb) == 0):
argent += 4
elif(rouge_noir(nb) == 1):
argent += 2
elif(pair_impair(nb) == 0):
argent += 2
if(pair_impair(nb) == 1 and rouge_noir(nb) == 2 ):
argent += 0
return argent
def victoire_tiers(nb, argent): # on regarde si on tombe sur un nombre qui appartient à un des tiers sur lesquels on a misé
argent -= 2
if(tiers(nb) == 1 or tiers(nb) == 2): # on considère que l'on joue à chaque partie 1€ sur le tiers 1 et 1€ sur le tiers 2
argent += 3
return argent
def partie(cashin,tirage): # joue un tour de roulette et renvoie l'argent restant
# cashin = prix auquel on veut stopper la partie, tirage = nombre de tirage par partie
argent_base = 10
maximum = argent_base
for i in tirage_num(tirage):
if(argent_base > 0 and argent_base < cashin): # on vérifie que l'on a de l'argent et que l'on ne dépasse pas le cashin
argent_base = victoire_tiers(i, argent_base)
if(argent_base > maximum):
maximum = argent_base
else: # sinon on arrête la partie
break
return argent_base
def npartie_return_argent(n,cashin, tirage): # comme au dessus mais renvoie la liste de l'argent restant à la fin de chaque partie comprenant x(tirage) tirages
liste = []
for i in range(n):
argent_base = 10
for i in tirage_num(tirage):
if(argent_base > 0 and argent_base < cashin):
argent_base = victoire_tiers(i, argent_base)
else:
break
liste.append(argent_base)
return liste
def npartie(n,cashin,tirage): # n = nombre de partie que l'on veut faire, cashin = prix auquel on veut stopper la partie, tirage = nombre de tirage par partie
nb = 0
gagnee = 0
perdue = 0
autre = 0
for y in range(n):
nb = partie(cashin,tirage)
if(nb == cashin):
gagnee += 1
elif(nb > 0 and nb < cashin):
autre += 1
elif(nb == 0):
perdue += 1
return gagnee, perdue, autre