Savoir compter ! [résolu]

miam shared this question 7 years ago
Answered

Bonjour à tous,


Une fois de plus, je viens faire appel à vos lumières, je suis en train de bricoler une petite activité, très simple, autour des probabilités. Pour faire simple : un jeu de fléchettes virtuel.


Dans le fichier joint, lorsqu'on clique sur le bouton "Lance", un point M est placé aléatoirement sur un quadrillage 10 * 10 .


Si je sais compter le nombre de lancers, je n'arrive pas à compter le nombre de coups soumis à une condition (par exemple M dans le carré violet).


Existe t-il un moyen simple (via le script par clic) de réaliser cela ? Ou bien faut il obligatoirement utiliser le tableur (je me dis que ça doit être faisable...) ou un script "plus compliqué" ?


Merci d'avance pour votre aide ! :D

https://ggbm.at/561093

Comments (13)

photo
1

Bonjour

Essaye quelque chose comme ce qui suit:

Créer une variable nombre nommée violet par "violet=0"

Créer une variable booléenne nommée DansViolet=(abs(x(M)-5)<2 ou (abs(y(M)-5)<2 . (mettre des inégalités large ou pas, c'est peut-être pas 2, le ou s'écrit avec un symbole particulier)

Dans le script (click et pas actualisation) de ton bouton Lance ajoute la ligne :

Si[DansViolet, SoitValeur[violet,violet+1]]


Il faut aussi ajouter dans le script de ton bouton RAZ

SoitValeur[violet,0]


Ensuite il suffit de faire la même chose avec tes autres domaines.


Bon travail

Joël

photo
1

Bonsoir, faute de soleil, une réponse :

après avoir créé le compteur dans violet :

    violet=0

Modifier le script du bouton lancer :

    x_M=AléaEntreBornes[1,10]

    y_M=AléaEntreBornes[1,10]

    compteur=compteur+1

    SoitValeur[violet,Si[EstDansRégion[M,poly3],violet+1,violet]]

et rajouter à RAZ

    [code]violet=0[/code]

Michel

https://ggbm.at/561095

https://ggbm.at/561097

photo
1

z'êtes très forts les garçons...

Je ne vois pas le smiley qui applaudit, ni celui qui se prosterne, mais le coeur y est !


Merci beaucoup ! :D

photo
1

Je viens de finir... j'ai mis ça dans le script par clic du bouton "lance" :


    x_M=AléaEntreBornes[1,10]

    y_M=AléaEntreBornes[1,10]

    compteur=compteur+1

    SoitValeur[violet,Si[EstDansRégion[M,poly3],violet+1,violet]]

    SoitValeur[vert,Si[EstDansRégion[M,poly2],vert+1,vert]]

    SoitValeur[vert,Si[EstDansRégion[M,poly3],vert-1,vert]]

    orange=compteur-vert-violet


et j'ai mis compteur, violet, vert et orange à 0 dans le bouton RAZ


Tout fonctionne, sauf lors du premier lancer... si la flechette est dans l'orange, tout va bien, mais si elle est dans le vert ou le violet, on dirait qu'il se passe, euh, n'importe quoi !


Autre truc étrange, si on active la trace de M, on dirait qu'il place deux points pour un clic... GeoGebra met donc à jour l'affichage de M après le premier calcul AléaEntreBornes ?

https://ggbm.at/561099

photo
1

pourquoi pas M=(AléaEntreBornes[1,10],AléaEntreBornes[1,10]) ?


Oui, je me suis aperçu que ça résolvait le problème après coup, désolé !


Par contre, le bug du "premier lancer" persiste, et m'échappe... Dans l'image ci-dessous, j'ai fait un RAZ, puis un lancé, la fléchette arrive dans le vert, mais c'est l'orange qui marque !


130328080350760368

photo
1

Re, et en mettant M loin pour démarrer ?

bouton : RAZ

    SoitCoordonnées[M,100,100]

    compteur=0

    violet=0

    vert0=0

    Agrandir[1]

bouton : Lancer

    SoitCoordonnées[M ,AléaEntreBornes[1, 10], AléaEntreBornes[1, 10]]

    SoitValeur[compteur,compteur+1]

    SoitValeur[violet,Si[EstDansRégion[M,poly3],violet+1,violet]]

    SoitValeur[vert0,Si[EstDansRégion[M,poly2],vert0+1,vert0]]

Par ailleurs, définitions :

    vert=vert0-violet

    orange=compteur-vert0

https://ggbm.at/561103

photo
1

Rhaaaa ! Je ne comprends pas pourquoi ça ne fonctionnait pas, mais je comprends bien que maintenant ça fonctionne... :confused:


Merci encore, mille fois ! :D

photo
1

Re, je pense qu'il y avait peut-être un souci avec orange :

- défini par une valeur 0 dans RAZ : variable libre

- redéfini comme dépendant de compteur vert et violet dans lance : variable liée

le passage d'un à l'autre peut, peut-être, poser problème.

Mets ton fichier en pièce jointe pour confirmer ou trouver où était vraiment le problème.

J'en joins un autre plus proche de ce que tu avais mis avant, avec RAZ : un point initial.

Juste une remarque : pourquoi n'utilises-tu pas :

AléatoireUniforme[0.5,10.5] au lieu de AléatoireEntreBornes

Michel

https://ggbm.at/561105

photo
1

Il est au dessus mon fichier précédent (message de 7.06 pm), je n'ai que celui la à te proposer, je suis depuis passé au tien et j'ai fait le ménage ! :confused:


Je pense de toute façons que je vais faire fabriquer le jeu sans compteur aux élèves, et que je leur fournirai la version avec compteur après...


Pour l'histoire de AléaEntreBornes vs AléaUniforme, j'ai pas spécialement réfléchi ! :anguished: Je me suis dit qu'en utilisant les coordonnées entières, j'avais 100 points et que pour estimer les probabilités, ça allait être plus simple que de raisonner avec les aires - ajoute à ça que ça enlève tous les problèmes liés aux fléchettes sur les bordures ! -

photo
1

Re bonsoir,


Je reviens avec un nouveau (petit) souci... :flushed:


Histoire de montrer la stabilisation des fréquences, j'ai légèrement modifié le fichier : Tout le script est passé dans les propriétés du curseur compteur, le bouton "lance" ne servant qu'a démarrer l'animation du compteur.


Et c'est la que le bât blesse... si je mets la vitesse du compteur à 0.1, les résultats que j'obtiens semblent cohérents, mais si jamais je monte la vitesse (j'étais parti sur 5), j'ai l'impression que le script se déroule "quand il peut" ! En tout cas, indépendamment de l'incrémentation de la variable compteur...


Est-ce normal ? :confused:

https://ggbm.at/561133

photo
1

Bonsoir, je ne sais pas répondre à ta question, à part que les flèches blessent :).

En général, quand on veut un grand nombre de points par exemple par méthode de balayage, il faut trouver un compromis du type créer d'abord un nombre de l'autre de centaines de points du type ton point dont tu fais la trace (au lieu d'un seul), le tableur est très adapté, et ne pas aller trop loin en vitesse. Exemple de balayage dans un autre contexte.

mais pour contourner le problème; si tu NE veux QUE le résultat d'un "grand" nombre de lancers, le javascript te permets d'obtenir le résultat sans problème. (vitesse optimale mais pas vision intermédiaire).

Ma remarque sur les points entiers, était justement pour que en pareil cas, quand le travail est fini, on ne voit pas la superposition des points et donc le graphique n'apporte pas grand chose, par contre avec la loi uniforme.

Alors je te propose les deux versions : lois uniformes continue et discrète.

J'ai rajouté une variable maxi pour la taille de l'échantillon.

J'ai compté, sur mon ordinateur, une vingtaine de secondes pour obtenir le résultat pour maxi = 5000

Michel

https://ggbm.at/561135

https://ggbm.at/561137

photo
1

Ça va plus vite chez moi, 5 s, quelle que soit la version.


Merci pour tes exemples en Javascript (je me demande d'ailleurs si il ne faudrait pas déplacer ce sujet dans la rubrique script), ça me fait toujours du bien d'avoir des exemples dans mon pc, vu le mal que ce langage me donne à chaque fois que j'essaie de m'y coller... :D


A propos de compromis, c'est au niveau des élèves que j'hésite ; les faire travailler sur une feuille toute faite ? leur faire créer la feuille ? Avec du script ? sans ? Bref, si je sais que quelques lignes de GGBscript ne devraient pas trop poser de problèmes, je vois déjà la panique arriver avec les lignes en Javascript pur ! Je vais donc couper la poire en deux je pense, leur faire fabriquer une version "simple", et réutiliser la version "compliquée" plus tard...


En tout cas, merci une fois de plus pour ton aide (et la célérité de celle ci) ! :D

photo
1

je me demande d'ailleurs si il ne faudrait pas déplacer ce sujet dans la rubrique script

Il suffit de demander. :)

L'aide du manuel.

Michel

© 2020 International GeoGebra Institute