Mathématiques pour les nuls, nombre de mains au poker

Partage

I Win

Le terme main désigne un ensemble de 5 cartes :

Par exemple:
As de trèfle, As de carreau, 8 de trèfle, 8 de pique et 6 de carreaux.

L’ordre des cartes n’a pas d’importance.

Pour bien comprendre ce billet, il peut être bon de relire:

Il y a 52 cartes dans le jeu.
Nous avons donc 52 possibilités pour la première carte. Celle-ci disparaît du jeu et il ne reste que 51 pour la deuxième, puis 50 pour la troisième, 49 pour la quatrième et enfin 48 pour la dernière.

52x51x50x49x48=311 875 200

Ce qui ne donne pas 311 875 200 mains! En effet nous avons spécifié plus haut que l’ordre n’avait pas d’importance !

nombre de mains au poker


photo credit: Wade From Oklahoma

Or nous avons dénombré plus de mains qu’il en a, puisqu’on a dénombré toutes les permutations possible des 5 cartes.
or il y a 5!=120 permutations dans un ensemble à 5 éléments.

La réponse au problème est donc
52x51x50x49x48/120=2598960Il y a exactement 2 598 960 mains au poker.
(On peut retenir, ça impressionne toujours en société qu’il y a environ 2,6 millions de mains au poker et que la probabilité d’avoir le plus gros jeu, soit la quinte flush royale à pique servie, est d’environ une chance sur 2,6 millions. Nous reparlerons de probabilité plus tard ! )

Qu’avons nous, mathématiquement, calculer ?

Combinaison, une définition simple :

On appelle combinaison de p élément d’un ensemble à n éléments une partie de cet ensemble ayant p éléments.

On note C(n,p) le nombre de ces combinaisons et on a:

cnp

Le script Python, avec la fonction cnp(n,p) qui permet de calculer le nombres de combinaisons :

Code Python traduit en HTML:
def fact (n):
    """retourne la factorielle de n""" 
    if n==0  :
        return 1
    else:
        return n*fact(n-1) #fonction récursive

def cnp (n,p):
    """retourne le nombre de combinaisons, p parmis n""" 

    if p>n:
        return "erreur" 
    result=1
    for i in range(n,n-p,-1):
        result *= i
    return result//fact(p)
def fact (n):
    """retourne la factorielle de n""" 
    if n==0  :
        return 1
    else:
        return n*fact(n-1) #fonction récursive

def cnp (n,p):
    """retourne le nombre de combinaisons, p parmis n""" 

    if p>n:
        return "erreur" 
    result=1
    for i in range(n,n-p,-1):
        result *= i
    return result//fact(p)

cnp

et un screenshot de l’IDLE:

cnp2

Partage

Laisser un commentaire

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