# Fabriquer des listes de tirages de longueur voulue
def LTPF(n) :
if n==0 : return ['']
else :
L=LTPF(n-1)
return ['P'+T for T in L]+['F'+T for T in L]
import numpy as np
# Calcul de la probabilité de victoire en fonction des choix A et B
def Prob(A,B) :
# liste des tirages à pile ou face de longueur 1 de moins que A et B
L=LTPF(len(A)-1)
l=len(L)
# Fabrication de la matrice de transition
Q=np.zeros((l,l)) ; R=np.zeros((l,2))
for j in range(l) :
S=L[j]+'P'
if S==A : R[j,0]=1/2
elif S==B : R[j,1]=1/2
else : Q[j,L.index(S[1:])]=1/2
T=L[j]+'F'
if T==A : R[j,0]=1/2
elif T==B : R[j,1]=1/2
else : Q[j,L.index(T[1:])]=1/2
# Vecteur initial
init=np.array(l*[1/l])
# Matrice fondamentale
N=np.linalg.inv(np.identity(l)-Q)
# Retour des probabilités de victoire pour A et B
return init.dot(N).dot(R)
# Meilleure chance contre une suite donnée
def Champion(A) :
L=LTPF(len(A))
G=[]
for B in L :
if B!= A :
G.append([Prob(A,B)[1],B])
G.sort(key= lambda i : i[0])
print("Meilleure chance contre {0} : {1}, avec {2:.1%} de chances de gagner"\
.format(A,G[-1][1],G[-1][0]))
Champion("FFPFFFPP")
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 23 invités
Tu pars déja ?
Identification
Pas encore inscrit ?
Ou identifiez-vous :