• Home
    • Home
    • Wouf's Blog
    • Bibliowouf
    • Boutique TShirt
    • Sponsoring
    • Politique de confidentialié
  • Math
    • Math au collège
    • Applis et boutiques
    • Cours particuliers
  • Jeux
    • Echecs
    • Poker
    • Des chiffres et des lettres
    • Dogs and cats (mastermind)
    • boggle - version Anglaise
    • boggle - version Française
  • Info
    • Console Python
    • SVG EDIT
    • fond d'écran
    • Prénom en chinois
    • Boite à outils
    • Mes Logiciels
    • DIVERS
    • Webmaster?
    • Liens

Laurent Petitprez

Tweet

Les conseils de Wouf

Beaucoup d’élèves entrant au lycée ont en effet des difficultés à manipuler les fractions, les racines carrées, les puissances, à factoriser des expressions… Ces notions, apprises au collège, sont mal assimilées, et le programme des classes de lycée ne prévoit pas de les retravailler en profondeur.

Cet ouvrage propose une remédiation pas à pas. Un code simple et mnémotechnique est associé à chacune des règles et rappelé dans toutes les corrections d’exercices. Il permet de se repérer et de comprendre ses erreurs.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie.

Confucius (sur mon T shirt!)

Voir toutes les citations.


Algorithme au cycle 4 - Sequence 6 : Bilan et commentaires

Vous en savez maintenant assez pour travailler, seul ou en équipe, sur notre projet conjugueur.py. Bien sûr, faire un programme qui conjugue tous les verbes, à tous les temps, en tenant compte des exceptions n'est pas envisageable faute de temps. Il vous faudra faire des choix, et être capable de les défendre.

Certains d'entre vous se concentreront peut-être sur le premier groupe en gérant un maximum d'exceptions, d'autres privilégieront le présent... Il n'y a pas de mauvais choix.

Un seul impératifs : M'envoyer le programme avant la date que je vous spécifierai à l'adresse mel que je vous indiquerai.

Quelques conseils

L'en tête de fichier

Code Python traduit en HTML:
# Jean Martin - 3A - Collège Peguy - Année scolaire 2017-2018

En première ligne doit apparaitre en commentaire (#) Votre nom, votre prénom, votre classe et l'information : Collège Peguy - Année scolaire 2017-2018

Si vous travaillez en équipe, vous ajouterez chaque membre sur une ligne distincte en nommant si possible la mission dans l'équipe :

Code Python traduit en HTML:
# Jean Martin - 3A - Collège Peguy - Année scolaire 2017-2018 - Chef de projet
# Marie Dupont - 3A - Collège Peguy - Année scolaire 2017-2018 - Spécialiste design
# Amine Bolli - 3A  - Collège Peguy - Année scolaire 2017-2018 - Gestion des fonctions

La note de version, la présentation du programme et les commentaires

Avec un commentaire multilignes (""") vous presenterrez rapidement votre projet :

Code Python traduit en HTML:
# Jean Martin - 3A - Collège Peguy - Année scolaire 2016-2017 - Chef de projet
# Marie Dupont - 3A - Collège Peguy - Année scolaire 2016-2017 - Spécialiste design
# Amine Bolli - 3A  - Collège Peguy - Année scolaire 2016-2017 - Gestion des fonctions
""" conjugueur. py
version 1.3.0
Cette version pilotée par Jean et designée par Marie conjugue les verbes à tous
les temps.
La fonction premier_groupe a été finalisée par Amine
La fonction deuxieme_groupe n'est pas terminée.""" 

Mail de contact

Une adresse mail de contact est nécessaire (en commentaire simple), je l'utiliserai pour vous communiquez la note du projet

Code Python traduit en HTML:
# Jean Martin - 3A - Collège Peguy - Année scolaire 2016-2017 - Chef de projet
# Marie Dupont - 3A - Collège Peguy - Année scolaire 2016-2017 - Spécialiste design
# Amine Bolli - 3A  - Collège Peguy - Année scolaire 2016-2017 - Gestion des fonctions
""" conjugueur. py
version 1.3.0
Cette version pilotée par Jean et designée par Marie conjugue les verbes à tous
les temps.
La fonction premier_groupe a été finalisée par Amine
La fonction deuxieme_groupe n'est pas terminée.""" 
#Contacter l equipe à jeanmartin@lecollege.fr

Un code bien commenté

Pensez à la citation suivante : "Les programmes doivent être écrits pour être lus par des gens et accidentellement exécutés par les machines."

Utilisez des testeurs

Une bonne pratique est de faire tester son code avant de l'envoyer. Une critique positive permet souvent une amélioration importante. Pourquoi ne pas indiquer dans l'en-tête l'identité du ou des testeurs ?

Soyez efficaces et productifs ! N'hésitez pas à relire le contenu des séquences 1 à 5 en bas de page !

Officiel

Au cycle 4, les élèves s'initient à la programmation, en développant dans une démarche de projet quelques programmes simples, sans viser une connaissance experte et exhaustive d'un langage ou d'un logiciel particulier. En créant un programme, ils développent des méthodes de programmation, revisitent les notions de variables et de fonctions sous une forme différente, et s'entraînent au raisonnement.

Attendus de fin de cycle

  • Écrire, mettre au point et exécuter un programme simple

Connaissances et compétences associées

Décomposer un problème en sous-problèmes afin de structurer un programme ; reconnaître des schémas. Écrire, mettre au point (tester, corriger) et exécuter un programme en réponse à un problème donné. Écrire un programme dans lequel des actions sont déclenchées par des événements extérieurs. Programmer des scripts se déroulant en parallèle. - Notions d'algorithme et de programme. - Notion de variable informatique. - Déclenchement d'une action par un événement, séquences d'instructions, boucles, instructions conditionnelles.

Exemples de situations, d'activités et de ressources pour l'élève

Jeux dans un labyrinthe, jeu de Pong, bataille navale, jeu de nim, tic tac toe. Réalisation de figure à l'aide d'un logiciel de programmation pour consolider les notions de longueur et d'angle. Initiation au chiffrement (Morse, chiffre de César, code ASCII...). Construction de tables de conjugaison, de pluriels, jeu du cadavre exquis... Calculs simples de calendrier. Calculs de répertoire (recherche, recherche inversée...). Calculs de fréquences d'apparition de chaque lettre dans un texte pour distinguer sa langue d'origine : français, anglais, italien, etc.

Repères de progressivité:

En 5e, les élèves s'initient à la programmation événementielle. Progressivement, ils développent de nouvelles compétences, en programmant des actions en parallèle, en utilisant la notion de variable informatique, en découvrant les boucles et les instructions conditionnelles qui complètent les structures de contrôle liées aux événements.

Liens
  • python.org Le site officiel, pour télécharger Python !
  • Apprenez à programmer en Python avec Openclassrooms
  • Un programme Python pour publier du code Python sur une page web
  • Algorithme au cycle 4
  • La séquence 1 : Qu'est-ce qu'un algorithme ? Où on joue avec les indices...
  • La séquence 2 : Premier programme et premières boucles
  • La séquence 3 : Premiers tests...
  • La séquence 4 : Tests imbriqués.
  • La séquence 5 : Premières fonctions.
  • La séquence 6 : Bilan et commentaires
  • La séquence 7 : Python et Cesar(1)
  • La séquence 8 : Python et Cesar(2) : Un exemple de fonction récursive
  • La séquence 9 : Python et Cesar(3) : Notion de portée de variable
  • La séquence 10 : Python et Cesar(4) :boucle FOR et accès aux fichiers
  • La Séquence 11 - Python, longueur et angle, le module turtle(1)
  • Python sur le Blog
  • Un exemple d'application utilisant tkinter : Juniper_U
  • Scratch - site officiel
Téléchargemments
  • Le memo des séquences 1 et 2 en PDF
  • Les sources :
    • Bonjour monde !
    • conjugueur.py version 0.0.0
    • conjugueur.py version 0.0.1 (correction fin de séquence 2)
    • conjugueur.py version 0.1.0 (fin de séquence 3)
    • conjugueur.py version 0.2.0 (départ séquence 5)
    • L'exemple de la séquence 3
    • L'exemple de la séquence 3 (version corrigée)
    • Les fonctions -projet cesar- de la séquence 9
 


Tweets by wouf

Comment ???

NEWS

  • Page : https://site2wouf.fr/algorithme_s6.php
  • Catégorie : Informatique

Ce jeu est-il équitable ? Probabilité et arithmétique.

J'ai proposé à mes élèves de troisième, dans le devoir 12 de cette année scolaire (2024-2025) l’exercice suivant :


Exercice 2 (L’ utilisation d’un tableur est recommandée)


On donne le jeu suivant :
« Chacun des deux joueurs tire au hasard un nombre entier entre 1 et 100. Si les deux nombres
sont premiers entre eux, c’est le joueur A qui gagne, sinon, c’est le joueur B qui gagne. »
Le jeu est-il équitable ?

Mes objectifs pour cet exercice étaient nombreux :

  • Travail sur des compétences arithmétiques (nombres premiers entre eux.)
  • Travail sur des compétences probabilistes ( Dans une situation d'équiprobabilité)
  • Travail sur des compétences algorithmiques (Tableur,Scratch, Python...)
  • travail sur des compétences de "débrouillardise" (Recherche internet, IA)

On dit que deux nombres a et b sont premiers entre eux lorsque leur plus grand diviseur commun est égal à 1.

Erreurs et idées fausses.

L'erreur la plus fréquente dans les copies corrigées est assez classique : beaucoup d'élèves confondent "nombres premiers" (des nombres divisibles uniquement par 1 et eux-mêmes) et "nombres premiers entre eux" (voir la définition dans l'encadré ci-dessus).
Bien évidemment, deux nombres premiers sont toujours premiers entre eux, mais la réciproque est fausse : deux nombres peuvent être premiers entre eux sans être premiers.
Par exemple, 24 et 35 ne sont pas premiers (24 = 2 × 2 × 2 × 3 et 35 = 5 × 7), mais leur PGCD est 1, donc ils sont premiers entre eux.

Une erreur m'a interpellé :

Plusieurs élèves ont affirmé que le joueur A était avantagé parce que le nombre 1 est "premier avec tous les autres". L'intuition n'est pas totalement fausse, mais la formulation manque de rigueur, et surtout, elle ne suffit pas à conclure sur l’équité du jeu.

Il est vrai que le PGCD de 1 et n’importe quel autre nombre est toujours 1, donc si l’un des deux joueurs tire le nombre 1, le couple sera automatiquement premier entre eux, et A gagnera. Cela ajoute effectivement des cas favorables à A. Mais cela ne veut pas dire pour autant que le jeu est inéquitable uniquement à cause de ce cas particulier.

En réalité, pour savoir si le jeu est équitable, il faut compter précisément le nombre total de paires (a, b) avec a et b choisis entre 1 et 100, et déterminer dans combien de ces cas le PGCD(a, b) = 1. Ce n’est qu’en calculant la proportion de couples premiers entre eux qu’on peut trancher.

L’ utilisation d’un tableur est recommandée

C'est un travail conséquent qui nécessite des connaissance sur le tableur :

Remplir automatiquement des plages de cellules
(#128073#) Utiliser la poignée de recopie pour générer les nombres de 1 à 100 en ligne ou en colonne.
✅ Compétence de base pour structurer les données.

Créer un tableau à double entrée
(#128073#) Générer toutes les paires possibles (a, b) avec 1 ≤ a ≤ 100 et 1 ≤ b ≤ 100.
✅ Permet de représenter toutes les situations possibles du jeu.

Utiliser la fonction PGCD() ou GCD()
(#128073#) Pour chaque couple (a, b), calculer le PGCD.
✅ Fonction centrale pour savoir si les deux nombres sont premiers entre eux (PGCD = 1).

Utiliser une fonction conditionnelle (SI, IF)
(#128073#) Par exemple : =SI(PGCD(A1;B1)=1;1;0) pour compter les cas favorables à A.
✅ Utile pour automatiser le décompte des cas gagnants.

Compter avec NB.SI() ou SOMME()
(#128073#) Calculer le nombre total de cas favorables à A, et à B.
✅ Nécessaire pour comparer les proportions et juger de l’équité.

Calculer une proportion ou un pourcentage
(#128073#) Par exemple : =Nombre_de_cas_pour_A / Total_des_cas
✅ Permet d’estimer la probabilité de victoire de A.

Mise en forme conditionnelle (facultative)
(#128073#) Colorer en vert les cellules où A gagne, en rouge celles où B gagne.
✅ Offre une lecture visuelle intuitive des résultats.

Créer un graphique (facultatif)
(#128073#) Diagramme en secteurs ou histogramme pour visualiser les parts de victoire.
✅ Favorise la compréhension des résultats par l’élève.

Ma correction via Google sheets :

https://docs.google.com/spreadsheets/d/1xtw31iyetEezuk22H38nG_FMAwc1xv42RtPDuKV-kU4/edit?usp=sharing

De la mauvaise utilisation des IA

En effet si on livre l'exercice à ChatGPT, celui-ci nous répond :

Ce jeu n’est pas équitable.

Deux nombres entiers tirés au hasard entre 1 et 100 sont premiers entre eux s’ils n’ont pas de diviseur commun autre que 1, c’est-à-dire si leur PGCD vaut 1.

Il est connu en théorie des nombres que la probabilité que deux entiers choisis au hasard soient premiers entre eux est d’environ :

6 / π² ≈ 0,6079, soit 60,8 %.

Ainsi :

  • Le joueur A gagne avec une probabilité d’environ 60,8 %.
  • Le joueur B gagne avec une probabilité d’environ 39,2 %.

Même si ici les nombres sont limités de 1 à 100, cette probabilité reste proche de cette valeur. Le joueur A est donc avantagé.

Conclusion : le jeu n’est pas équitable.

Cette probabilité est issue d’un raisonnement en théorie des nombres et fait intervenir la fonction zêta de Riemann. La démonstration fait appel à :

  • la densité des couples premiers entre eux (Théorème de Cesàro) parmi les entiers,
  • la multiplicativité de la fonction indicatrice d’Euler,
  • La série de Dirichlet.

La démonstration complète est un beau résultat de mathématiques pures, que l’on rencontre typiquement en licence ou début de master en mathématiques. Elle mêle analyse et arithmétique.

On est donc loin des attendus de troisième !

De la bonne utilisation des IA

Partager une passion est un privilège. Je développe en Python depuis  Python 1.0 dans les années 90 et j'évoque ce langage souvent en classe. Par l’intermédiaire du bac à sable Python disponible sur le site2wouf.fr je montre qu'on peut, avec l'aide de Python et éventuellement d'une IA :

  • s'amuser
  • gagner du temps

Ainsi quand on a évoqué les algorithmes de recherche du pgcd, j'ai donné cette fonction :

def pgcd(a, b):
    
    # Échange si nécessaire pour que a ≥ b
    if a < b:
        a, b = b, a
    
    # Algorithme d'Euclide
    while b:
        a, b = b, a % b
    
    return a

N'hésitez pas à copier-coller dans le bac à sable !

Alors pourquoi ne pas simuler le jeu de l'exercice en utilisant cette fonction ?

from random import *
nb_max=100
score1=0
score2=0

def pgcd(a, b):
    
    # Échange si nécessaire pour que a ≥ b
    if a < b:
        a, b = b, a
    
    # Algorithme d'Euclide
    while b:
        a, b = b, a % b
    
    return a
#-----------------------------------------------------

def jouer():
    #les scores des joueurs sont des variables globales:
    global score1,score2
    
    j1,j2=randint(1,nb_max),randint(1,nb_max)
    print("joueur 1 :",j1," joueur 2 :",j2)
    if pgcd(j1,j2)==1:
        score1+=1
    else:
        score2+=1
   
#---------------------------------------------------    
for i in range(10):     #on simule 10 parties
    jouer()
    
if score1<score2:
    print("Le joueur 2 a gagné !")
elif score1==score2:
    print("Egalité !")
else:
    print("Le joueur 1 a gagné !")
    

N'hésitez pas à copier-coller dans le bac à sable !

En répétant plusieurs fois l'exécution du script on a l'intuition que le joueur A gagne plus souvent que le joueur B. Mais ce n'est qu'une intuition.

Version finalisée

Plus besoin de hasard, on va tester tous les couples (sans rien afficher, il y en a 100x100=10 000) et livrer les résultats au sortir de la boucle :

score1=0
score2=0

def pgcd(a, b):
    
    # Échange si nécessaire pour que a ≥ b
    if a < b:
        a, b = b, a
    
    # Algorithme d'Euclide
    while b:
        a, b = b, a % b
    
    return a
#-----------------------------------------------------

def jouer(j1,j2):
    #les scores des joueurs sont des variables globales:
    global score1,score2
    if pgcd(j1,j2)==1:
        score1+=1
    else:
        score2+=1
   
#---------------------------------------------------    
for x in range(100):   
    for y in range(100): #x et y varient entre 0 et 99
        jouer(x+1,y+1)      #c'est pourquoi on ajoute 1
        
print("Les scores :",score1,score2)
print(score1/100,"% - ",score2/100,"%")
if score1<score2:
    print("Le joueur 2 a plus de chance de gagner !")
elif score1==score2:
    print("Le jeu est équitable")
else:
    print("Le joueur 1 plus de chance de gagner !")
    

N'hésitez pas à copier-coller dans le bac à sable !

Nous avons le résultat en une fraction de seconde !

lien vers l'article sur wouf blog
 

TIPS

Utilisateur de Python et manipulateur de fractions ?

Connaissez-vous l'objet fraction ?

Voir tous les conseils.

Dernière mise à jour:

Juillet-aôut 2023

Nouvelle Page !

  • Exercices du jour : Les 16 immeubles !

Pages modifiées (ou corrigées) !

  • Exercices du jour : L'enclos
  • Exercices du jour : Les carrelages de couleur /a>

Voir toutes les mises à jour.

 

Trois liens disponibles !

Votre propre message ici, c'est possible! Plus d'informations



Sauf mention contraire, le site est placé sous double licence Creative Commons et GNU Free Documentation License, par contre les grandes images décoratives appartiennent à Corbis et sont licenciées par microsoft

Contact: w0uf@free.fr (avec un zéro à la place du O)