|
|
import numpy.random as npr
|
|
|
from collections import Counter
|
|
|
|
|
|
# Chiffre entre 0 et 1
|
|
|
print(npr.rand())
|
|
|
|
|
|
# reset l'instance random de base =1 ==> soit none
|
|
|
print(npr.seed(seed=1))
|
|
|
|
|
|
# random entre 3<= et >5
|
|
|
print(npr.randint(3,5))
|
|
|
|
|
|
# 4- énère les résultats des commandes précédentes.
|
|
|
print(npr.rand())
|
|
|
print(npr.seed(seed=1))
|
|
|
print(npr.randint(3,5))
|
|
|
|
|
|
# 5- Générer un tableau binaire de taille 10 (qui ne contient que 0 ou 1)
|
|
|
print(npr.randint(0,2,10))
|
|
|
tab1=npr.randint(0,2,10)
|
|
|
|
|
|
# 6 - A l’aide de la commande Counter de la classe collections, calculer les occurrences de 1 et de 0.
|
|
|
print(Counter(tab1))
|
|
|
|
|
|
# 7 - Écrire une fonction fct_occ qui prend un tableau d’entiers en entrée, calcule les
|
|
|
# occurrences de chacun de ses éléments et rend un tableau qui contient ces occurrences.
|
|
|
def fct_occ(tab):
|
|
|
occ=Counter()
|
|
|
for i in tab:
|
|
|
occ[i]+=1
|
|
|
return occ
|
|
|
|
|
|
print(fct_occ(tab1))
|
|
|
|
|
|
# 8 - Générer un tableau aléatoire tab de taille 5 qui ne contient que des entiers entre 1
|
|
|
# et 6.
|
|
|
tab2 = npr.randint(1,7,5)
|
|
|
print(tab2)
|
|
|
|
|
|
# 9 - À l’aide de la fonction fct_occ et de tab, comment détecteriez-vous
|
|
|
# • Un carré ? quattres valeurs identique dans tab1
|
|
|
# • Un full ? Trois valeurs identique et deux autres identiques
|
|
|
# • Une petite suite ? 5 valeurs différentes qui se suivent
|
|
|
|
|
|
# Exo 2
|
|
|
|
|
|
#? 1
|
|
|
# P(carre) = (6*5*5)/6⁵ ==> proba théorique
|
|
|
|
|
|
def fct_carre():
|
|
|
carre = 0
|
|
|
for i in range(10000):
|
|
|
tab = npr.randint(1,7,5)
|
|
|
res = fct_occ(tab)
|
|
|
for k in res.values():
|
|
|
if k == 4:
|
|
|
carre += 1
|
|
|
return carre
|
|
|
|
|
|
print("Estimation numérique : ",fct_carre()/10000)
|
|
|
print("Proba théorique : P(carre) = (6*5*5)/6⁵")
|
|
|
|
|
|
#? 2
|
|
|
# P(full) = (6*5*4)/6⁵ ==> proba théorique
|
|
|
|
|
|
def fct_full():
|
|
|
full = 0
|
|
|
for i in range(10000):
|
|
|
tab = npr.randint(1,7,5)
|
|
|
res = sorted(fct_occ(tab).values())
|
|
|
if res == [2,3]:
|
|
|
full += 1
|
|
|
return full
|
|
|
|
|
|
print("Estimation numérique : ",fct_full()/10000)
|
|
|
print("Proba théorique : P(carre) = (6*5*4)/6⁵")
|
|
|
|
|
|
#? 3
|
|
|
# P(brelan) = (6*5*4)/6⁵ ==> proba théorique
|
|
|
|
|
|
def fct_brelan():
|
|
|
brelan = 0
|
|
|
for i in range(10000):
|
|
|
tab = npr.randint(1,7,5)
|
|
|
res = sorted(fct_occ(tab).values())
|
|
|
if res == [1,1,3]:
|
|
|
brelan += 1
|
|
|
return brelan
|
|
|
|
|
|
print("Estimation numérique : ",fct_brelan()/10000)
|
|
|
print("Proba théorique : P(carre) = (6*5*4)/6⁵")
|
|
|
|
|
|
#? 4
|
|
|
# P(yam) = (6)/6⁵ ==> proba théorique
|
|
|
|
|
|
def fct_yam():
|
|
|
yam = 0
|
|
|
for i in range(10000):
|
|
|
tab = npr.randint(1,7,5)
|
|
|
res = fct_occ(tab)
|
|
|
for k in res.values():
|
|
|
if res == [2,3]:
|
|
|
yam += 1
|
|
|
return yam
|
|
|
|
|
|
print("Estimation numérique : ",fct_yam()/10000)
|
|
|
print("Proba théorique : P(carre) = (6)/6⁵")
|
|
|
|
|
|
#? 5
|
|
|
# P(ps) = (3)/6⁵ ==> proba théorique
|
|
|
|
|
|
def fct_ps():
|
|
|
ps = 0
|
|
|
for i in range(10000):
|
|
|
tab = npr.randint(1,7,5)
|
|
|
res = sorted(fct_occ(tab).values())
|
|
|
if res == [2,3]:
|
|
|
ps += 1
|
|
|
return ps
|
|
|
|
|
|
print("Estimation numérique : ",fct_ps()/10000)
|
|
|
print("Proba théorique : P(carre) = (3)/6⁵")
|
|
|
|
|
|
# Exo 3
|
|
|
|
|
|
#1
|
|
|
def jouer_6():
|
|
|
tab=[0,0,0,0,0]
|
|
|
tab6=[0,0,0,0,0]
|
|
|
nombre=0
|
|
|
n=Counter()
|
|
|
for i in range(3):
|
|
|
for i in range(len(tab)):
|
|
|
tab[i]=npr.randint(1,7)
|
|
|
for k in range(len(tab6)):
|
|
|
if (tab6[k]==6):
|
|
|
tab[k]=0
|
|
|
for j in range(len(tab)):
|
|
|
if (tab[j] == 6):
|
|
|
tab6[j]=6
|
|
|
for l in range(len(tab6)):
|
|
|
if (tab6[l]==0):
|
|
|
tab6[l]=tab[l]
|
|
|
n = fct_occ(tab6)
|
|
|
nombre = n[6]
|
|
|
return nombre
|
|
|
|
|
|
print("")
|
|
|
occ=jouer_6()
|
|
|
print(occ)
|
|
|
|
|
|
#2
|
|
|
x=[]
|
|
|
for i in range(10000):
|
|
|
npr.seed(seed=i)
|
|
|
x.append(jouer_6())
|
|
|
|
|
|
|
|
|
#plt.hist(x,orientation='horizontal')
|
|
|
#plt.show()
|
|
|
|
|
|
#3
|
|
|
#a.
|
|
|
lancer1=0
|
|
|
lancer2 =0
|
|
|
lancer3 =0
|
|
|
lancer4= 0
|
|
|
lancer5=0
|
|
|
total=0
|
|
|
for i in x:
|
|
|
if (i == 1):
|
|
|
lancer1+=1
|
|
|
if (i == 2):
|
|
|
lancer2+=1
|
|
|
if (i == 3):
|
|
|
lancer3+=1
|
|
|
if (i == 4):
|
|
|
lancer4+=1
|
|
|
if (i == 5):
|
|
|
lancer5+=1
|
|
|
total+=1
|
|
|
|
|
|
print("")
|
|
|
print("")
|
|
|
print("Proba d'avoir 1 le lance d'un 6: ", lancer1/total, "%")
|
|
|
print("Proba d'avoir 2 le lance d'un 6: ", lancer2/total, "%")
|
|
|
print("Proba d'avoir 3 le lance d'un 6: ", lancer3/total, "%")
|
|
|
print("Proba d'avoir 4 le lance d'un 6: ", lancer4/total, "%")
|
|
|
print("Proba d'avoir 5 le lance d'un 6: ", lancer5/total, "%")
|
|
|
|
|
|
#b.
|
|
|
print("")
|
|
|
print("Pour obtenir un Yam de 6, on aura ", lancer5/total, "% \de chance d'en avoir un sur 10.000 lancers.")
|
|
|
|
|
|
# Ex 4
|
|
|
|
|
|
# P(3lancers) = 1/6 * 5/6 * 5/6
|
|
|
# P(5lancers) = 6/6 * 1/6 * 1/6 * 1/6 * 1/6 |