Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente | Prochaine révisionLes deux révisions suivantes | ||
teaching:exos:poker_menteur [2013/10/31 11:41] – villersd | teaching:exos:poker_menteur [2013/11/03 10:00] – villersd | ||
---|---|---|---|
Ligne 13: | Ligne 13: | ||
- une quinte ou poker | - une quinte ou poker | ||
* Ces combinaisons sont-elles justifiables sur base de l' | * Ces combinaisons sont-elles justifiables sur base de l' | ||
+ | * Examiner en fonction du nombre de lancers simulés la convergence des statistiques vers les probabilités en fonction du type de main. | ||
+ | |||
+ | ===== Solution ===== | ||
+ | |||
+ | Voici un programme permettant de simuler et traiter des lancers | ||
+ | |||
+ | <sxh python; title : Poker_des_01.py> | ||
+ | # | ||
+ | # -*- coding: utf-8 -*- | ||
+ | |||
+ | # Poker menteur : lancers et mains possibles | ||
+ | # 5 dés numérotés [1, 2, 3, 4, 5, 6] | ||
+ | # | ||
+ | |||
+ | import random | ||
+ | |||
+ | def lancer_de(nfaces = 6): | ||
+ | # résultat lancer d'un seul dé | ||
+ | try: return random.randint(1, | ||
+ | except: return 0 | ||
+ | |||
+ | def lancer_des(ndes = 1, nfaces = 6): | ||
+ | # résultat lancer de plusieurs dés. Sortie en liste triée. | ||
+ | #try: return tuple(sorted([random.randint(1, | ||
+ | try: return sorted([random.randint(1, | ||
+ | except: return () | ||
+ | |||
+ | def main(lancer): | ||
+ | # construit une liste triée par nombre d' | ||
+ | # de 2 nombres : nombre d' | ||
+ | comptage = sorted([[lancer.count(valeur), | ||
+ | #print comptage, | ||
+ | # | ||
+ | # construit un tuple des nombres d' | ||
+ | signature = tuple([nombre for nombre, valeur in comptage if nombre != 0]) | ||
+ | #print signature, | ||
+ | main = mains[signature] # qualification correspondante de la main | ||
+ | if main == "rien, petite ou grande suite": | ||
+ | # l' | ||
+ | if lancer[0]==2: | ||
+ | main = " | ||
+ | elif lancer[4]==5: | ||
+ | main = " | ||
+ | else: | ||
+ | main = " | ||
+ | return main | ||
+ | |||
+ | # dictionnaire de correspondance pour les tuples des occurrences triées | ||
+ | t5=tuple([5]) | ||
+ | mains = { | ||
+ | (1, | ||
+ | (1,1,1,2): "une paire", | ||
+ | (1,2,2): "deux paires", | ||
+ | (1,1,3): " | ||
+ | (2,3): " | ||
+ | (1,4): " | ||
+ | t5: " | ||
+ | } | ||
+ | | ||
+ | n_essais=100 | ||
+ | for i in range(n_essais): | ||
+ | lancer= lancer_des(5, | ||
+ | print lancer, main(lancer) | ||
+ | </ | ||
+ | |||
+ | Et voici un autre programme permettant d' | ||
+ | |||
+ | <sxh python; title : Poker_des_03.py> | ||
+ | # | ||
+ | # -*- coding: utf-8 -*- | ||
+ | |||
+ | # ... | ||
+ | |||
+ | lancers_possibles={} | ||
+ | histo_mains={} | ||
+ | for f1 in range(1,7): # pour toutes les faces possibles du dé 1 | ||
+ | for f2 in range(1,7): # pour toutes les faces possibles du dé 2 | ||
+ | for f3 in range(1,7): # pour toutes les faces possibles du dé 3 | ||
+ | for f4 in range(1,7): # pour toutes les faces possibles du dé 4 | ||
+ | for f5 in range(1,7): # pour toutes les faces possibles du dé 5 | ||
+ | lancer= tuple(sorted([f1, | ||
+ | #print lancer, main(lancer) | ||
+ | if lancers_possibles.has_key(lancer): | ||
+ | lancers_possibles[lancer][1]+=1 | ||
+ | histo_mains[lancers_possibles[lancer][0]]+=1 | ||
+ | else: | ||
+ | main2=main(lancer) | ||
+ | lancers_possibles[lancer]=[main2, | ||
+ | if histo_mains.has_key(main2): | ||
+ | histo_mains[main2]+=1 | ||
+ | else: | ||
+ | histo_mains[main2]=1 | ||
+ | |||
+ | for c,v in lancers_possibles.iteritems(): | ||
+ | print c,v | ||
+ | |||
+ | for c,v in histo_mains.iteritems(): | ||
+ | print c,v | ||
+ | print 'somme = ', | ||
+ | print '6**5 = ',6**5 | ||
+ | </ | ||
+ | |||
+ | <note tip>Pour la comparaison entre les probabilités issues de l' |