from random import*

p=float(input("Valeur de p, probabilité de gain de C sur A ou B, entre 0 et 1 : "))

# la fonction partie1 définit la première partie entre les joueurs A et B
def partie1():
    R=random()
    if R<0.5:
        res1="B"
    else:
        res1="A"
    return res1

# la fonction partie2 définit la première partie entre les joueurs (A ou B) et C
def partie2():
    R=random()
    if R<p:
        res2="C"
    else:
        res2=L[0]
    return res2


# la fonction partie définit une partie entre les trois joueurs
def partie():
    n=len(L)
    G=random()
    if (L[n-2]=="A"and L[n-1]=="B"):# B va jouer contre C
        if G<p:
            res="C"
        else:
            res="B"
        
    if (L[n-2]=="B"and L[n-1]=="A"):# A va jouer contre C
        if G<p:
            res="C"
        else:
            res="A"
        
    if (L[n-2]=="C" and L[n-1]=="A"):# A va jouer contre B
        if G<0.5:
            res="B"
        else:
            res="A"
        
    if (L[n-2]=="A" and L[n-1]=="C"):# B va jouer contre C
        if G<p:
            res="C"
        else:
            res="B"
            
    if (L[n-2]=="C" and L[n-1]=="B"):# A va jouer contre B
        if G<0.5:
            res="B"
        else:
            res="A"
                    
    if (L[n-2]=="B"and L[n-1]=="C"):# C va jouer contre A
        if G<p:
            res="C"
        else:
            res="A"
    return res

# on va définir une série de N jeux et faire la moyenne des compteurs
# afin d'estimer la probabilité de gain de chaque joueur
# les compteurs évaluent le nombre de victoires de chaque joueur
cptA=0
cptB=0
cptC=0


for i in range (100000):
    bilan=0
    L=[partie1()]
    L.append(partie2())

    if L[0]=="A" and L[1]=="A":
        cptA=cptA+1
        bilan=1
        
    if L[0]=="B" and L[1]=="B":
        cptB=cptB+1
        bilan=1
        
    while bilan==0:
        n=len(L)
        if L[n-1]==L[n-2]:
            if L[n-1]=="A":
                cptA=cptA+1
            if L[n-1]=="B":
                cptB=cptB+1
            if L[n-1]=="C":
                cptC=cptC+1
            bilan=1
        else:
            L.append(partie())
 
print("Sur une série de 100 000 parties, et avec une valeur de p =",p)
print("Les estimations des probabilités de gain des joueurs A, B et C sont : ",cptA/100000,",",cptB/100000," et ",cptC/100000)
