Probabilités dans le jeu Istanbul

Istanbul

Dans le jeu de société Istanbul, vous devez obtenir quelques rubis (5 ou 6 selon le nombre de joueurs) pour gagner une partie.
Pour gagner ces rubis, plusieurs chemins sont possibles, mais il sera nécessaire de gagner de l’argent et des ressources, les vendre, ainsi que d’autres actions pour parvenir à accumuler ces rubis.

Deux actions nécessitent de jeter deux dés de 6, le salon de thé et la marché noir.

Dans le salon de thé, il faut parier un nombre entre 3 et 12, jeter les dés, et comparer le résultat obtenu avec la valeur pariée. Si l’on obtient au moins la valeur pariée, alors on gagne cette valeur en argent (des livres), sinon on gagne 2 livres.

J’ai fait un petit algo en python pour calculer les probabilités de gains sur ces cartes, selon si l’on possède la tuile de modification de dé en plus ou non.
Je crée deux fonctions, au_moins et au_moins_4 qui permettent de calculer le nombre d’issues possibles sans et avec la carte de modification.

Résultat de l’algorithme:

Valeur Proba sans carte (en %)
Proba avec carte (en %)
3 97.22 100.0
4 91.67 100.0
5 83.33 100.0
6 72.22 99.23
7 58.33 95.37
8 41.67 85.42
9 27.78 67.9
10 16.67 44.44
11 8.33 15.97
12 2.78 5.48

L'algorithme

def print_liste(liste):
    for i in range(len(liste)):
        print(liste[i])

def calc_au_moins(n,possibility):
    nb = 0
    for i in range(len(possibility)):
        if n <= possibility[i][0]+possibility[i][1]:
            nb += 1
    return nb

def calc_au_moins_4(n,possibility):
    nb = 0
    nb_4 = 0
    liste_4 = []
    for i in range(len(possibility)):
        if n <= possibility[i][0]+possibility[i][1]:
            if possibility[i][0] == 4 and possibility[i][1] == 4:
                for j in range (1,5):
                   if [j,4] not in liste_4:
                       liste_4.append([j,4])

                   if [4,j] not in liste_4:
                        liste_4.append([4,j])

            else:
                if possibility[i][0] == 4:
                    for j in range(1,5):
                        if [j,possibility[i][1]] not in liste_4:
                            liste_4.append([j,possibility[i][1]])
                else:
                    if possibility[i][1] == 4:
                        for j in range(1,5):
                            if [possibility[i][0],j] not in liste_4:
                                liste_4.append([possibility[i][0],j])
                    else:
                        if [possibility[i][0],possibility[i][1]] not in liste_4:
                            liste_4.append([possibility[i][0],possibility[i][1]])
    return len(liste_4)


if __name__ == '__main__':
    possibility = []
    for i in range(1,7):
        for j in range(1,7):
            possibility.append([i,j])
    print_liste(possibility)

    au_moins = []
    au_moins_4 = []
    proba = []
    taille = len(possibility)
    for i in range (3,13):
       nb = calc_au_moins(i, possibility)
       nb4 = calc_au_moins_4(i, possibility)
       au_moins.append([i,nb])
       au_moins_4.append([i, nb4])
       probacour1 = round(nb/taille*100,2)
       probacour = round(( nb4/taille + (taille-nb4)/taille*nb/taille)*100,2)
       proba.append([i,probacour1,probacour])
    print('liste de cas')
    print_liste(au_moins)
    print('liste de cas avec modif de 4')
    print_liste(au_moins_4)
    print('liste de proba')
    print_liste(proba)

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *