Différence entre les packages permettant d'utiliser des valeurs aléatoires ?

Added by Liouba Leroux 11 months ago

Bonjour,

je cherche à faire des QCM dont certaines valeurs sont aléatoires.
Dans le manuel d'AMC, plusieurs packages sont évoqués : FP, pgf/tikz, lualatex
J'ai entendu parlé de problèmes d'arrondis avec FP, et j'ai parcouru certains messages du forum sur la stabilité des tirages (pseudo)aléatoires dans les compilations AMC si on veut retoucher un barême par exemple sans tout saisir.

Est-ce que de bonnes âmes pourraient faire part de leur expérience et des raisons qui les ont poussé à faire tel choix plutôt que tel autre ?

Merci d'avance !


Replies (18)

RE: Différence entre les packages permettant d'utiliser des valeurs aléatoires ? - Added by Gérard Carpeaux 11 months ago

AMC utilise fp pour les questions numériques.
J'utilise fp parce qu'en débutant AMC + latex (2013), pgf/tikz avait une documentation incompréhensible pour moi.
J'utilise la fonction round.
J'enseigne la physique chimie en collège donc j'utilise fp pour les valeurs aléatoires de tensions, intensités, vitesses. J’arrondis à la valeur entière ou au dixième.

N'oubliez pas de mettre après \begin{document} la valeur de la graine sinon lors de la correction vos valeurs seront toutes fausses. Expérience vécue...

RE: Différence entre les packages permettant d'utiliser des valeurs aléatoires ? - Added by BERNARD GRAVOUIL 11 months ago

Je suis prof de mathématique en lycée. Fan inconditionnel d'AMC (il faut toujours le souligner : encore BRAVO aux concepteurs de ce logiciel !!!!) pour la réalisation de QCM qui me servent tout au long de l'année.

J'utilise

 \FPeval\VQtoto{} 
pour les calculs entre valeurs numériques (+, -, x, /, clip, round, sqrt, sin, cos, etc.).
J'utilise
 \pgfmathrandominteger{}{}{} 
pour générer des valeurs entières aléatoires.

Effectivement les valeurs de graines sont importantes ; petite précision : j'affecte systématiquement, "en clair", deux variables globales en début de code pour être sûr de connaître la graine utilisée (pour éventuellement pouvoir regénérer les mêmes questionnaires) :

    \gdef\VQmathsetseed {12345}    % Prend n'importe quelle valeur (nombre). C'est la graine (seed) utilisée par le générateur
                    % des valeurs (pseudo-aléatoires) mathématiques utilisées dans les questions.
    \gdef\VQAMCrandomseed {54321}    % Prend n'importe quelle valeur (nombre). C'est la graine (seed) utilisée par le générateur
                    % des valeurs (pseudo-aléatoires) de numéro de question et de réponses.

puis :
                % Fixe la génération aléatoire de valeurs mathématiques
                % selon toujours le même ordre (donc PSEUDO aléatoire !) => permet
                % de regénérer la même famille de doc sources.   
                    \pgfmathsetseed{\VQmathsetseed}
                    %    
                % Permet de générer l'ordre des questions de façon aléatoire.
                % (le numéro ne doit pas être changé après l'impression des QCM
                %  sinon une regénération modifiera complètement le QCM)
                    \AMCrandomseed{\VQAMCrandomseed}
                    %

Les raisons qui m'ont poussé à faire des choix sont : l'ignorance absolue ! J'ai avancé pas à pas dans cet univers latex + AMC et j'ai choisi en fonction des exemples qui me sont tombés sous la main. Je n'ai jamais eu à regretter ces choix par la suite (et pour l'instant ;o).

RE: Différence entre les packages permettant d'utiliser des valeurs aléatoires ? - Added by Gérard Carpeaux 11 months ago

\pgfmathrandominteger{}{}{}

Avec fp, j'utilise :

\FPeval\X{round(a+b*random,0)}

Cela vous donne une valeur X entre a et a+b

RE: Différence entre les packages permettant d'utiliser des valeurs aléatoires ? - Added by Liouba Leroux 11 months ago

Merci pour vos réponses.

Pour compléter, j'ai trouvé dans la doc de FP de quoi gérer la graine de FP :
\FPseed=123456

@Gérard Carpeaux, je suis un peu étonné de l'utilisation de round : en effet, par exemple round(3+4*random,0) donnera bien des nombres de 3 à 7, mais sauf erreur de ma part, non uniformément : 3 et 7 auront deux fois moins de chance d'être choisi que 4,5 et 6 car 3+4*rnd donne un nombre entre 3 et 6,9999.. donc en arrondissant les résultats de 3 à 3.499 seront arrondis à 3, ceux de 3.5 à 4.4999 arrondis à 4 etc...

Bon, ce n'est pas forcément très grave...

D'habitude j'utilise plutôt trunc(a+(b+1)*random,0) si a est la borne et b est l'amplitude
Après, on peut aussi écrire trunc(a+(b+1-a)*random,0) si a et b sont les deux bornes

RE: Différence entre les packages permettant d'utiliser des valeurs aléatoires ? - Added by Joss OUIN 11 months ago

Bonsoir à tous,

J'ai un QCM avec du FP et du random mais je n'ai jamais utilisé de graine particulière comme "\FPseed=123456" après le "\begin{document}"
J'ai eu une fois à changer un barème et à relancer la correction et cela n'a pas changé les valeurs pseudo-aléatoires de départ du QCM (Ouf, tant mieux !).

N'oubliez pas de mettre après \begin{document} la valeur de la graine sinon lors de la correction vos valeurs seront toutes fausses. Expérience vécue...

Gérard, pourrais-tu donner un exemple où ne pas imposer de graine de départ "\FPseed=123456" crée un problème plus tard au niveau des copies des étudiants. Merci.

Bonne soirée.
Joss.

RE: Différence entre les packages permettant d'utiliser des valeurs aléatoires ? - Added by Liouba Leroux 11 months ago

Bonjour,
juste une précision, même si elle peut sembler aller de soit, dans \FPseed=123456, 123456 est un exemple, on peut mettre n'importe quelle graine bien sûr.
La relecture du barème par AMC ne recompile pas le document, donc c'est normal que rien n'ai changé.
Je suppose que Gérard faisait allusion à une recompilation des sujets après leur impression, mais j'avoue que l'opération me paraît risquée, même si on a choisi la graine de AMC... en tout cas pour le scan. Peut-être est-ce possible de changer la nature des réponses (bonne devient mauvaise par exemple), sans toucher à la mise en page, mais on peut contourner le problème en ne changeant que le barème (et mettre une bonne réponse ponctuellement à 0 et une mauvaise ponctuellement à 1.
Je suis aussi preneur d'un exemple.
Cordialement,

RE: Différence entre les packages permettant d'utiliser des valeurs aléatoires ? - Added by Alexis Bienvenüe 11 months ago

La relecture du barème par AMC ne recompile pas le document

En fait, si : quand on clique sur Corriger avec la case Mettre à jour le barème cochée, AMC va compiler le document pour en extraire les informations fournies par (entre autres) les commandes \bareme. C'est d'ailleurs pour cela qu'on peut modifier le barème dans le fichier source, et également changer le statut des réponses (\bonne ou \mauvaise), et réactualiser les notes avec la mise à jour du barème.
AMC compile plusieurs fois le document source, également pour fabriquer les différents documents de travail (sujet, corrigé, etc.), qui pourront être utilisés pour les copies corrigées dans certains cas (en particulier si le scan n'est pas fourni).
C'est encore le cas si il y a des références internes dans le document (référence à un numéro de question ou de page) : dans ce cas LaTeX a besoin de plusieurs compilations.
Donc dans tous les cas, il est essentiel que la compilation soit reproductible, donc que le graines des générateurs aléatoires utilisés soient fixées (et ne dépendent pas de la date par exemple).

Théoriquement, repartir de zéro à partir du même fichier source donne le même résultat, et ça ne pose pas de problème même si l'examen est déjà passé. Mais on n'est jamais à l'abri d'une modification du fichier source qu'on croyait sans incidence, ou d'une mise a jour de certains packages LaTeX (en premier lieu celui fourni par AMC) qui vont changer légèrement la mise en page (ou finalement de manière importante à cause de changements de page modifiés) et empêcher la reconnaissance des scans par AMC. Donc il vaut mieux ne jamais le faire, ou en tous cas garder une copie du répertoire projet quelque part...

RE: Différence entre les packages permettant d'utiliser des valeurs aléatoires ? - Added by Joss OUIN 11 months ago

Bonjour à tous,

C'est vrai que les seules modifications que j'ai pu faire suite à l'impression du sujet étaient :
1/ modifier le barème ;
2/ modifier \bonne en \mauvaise et vice-versa ;
3/ modifier un trunc() en round() pour l'arrondi suite à un calcul avec des valeurs pseudo-aléatoires dans une question "questionmultx".

Sans avoir de \FPSeed=12345, AMC a laissé les questions comme elles étaient sans modifier les valeurs pseudo-aléatoires et donc les copies.

A l'avenir, je mettrai quand même un \FPSeed=12345 car je préfère avoir une ligne de trop dans mon document LaTeX plutôt que de prendre le risque de voir les valeurs numériques changer brusquement suite à une manipulation que je pensais sans conséquences !

Belle journée à tous,
Joss.

RE: Différence entre les packages permettant d'utiliser des valeurs aléatoires ? - Added by Alexis Bienvenüe 11 months ago

A l'avenir, je mettrai quand même un \FPSeed=12345 car je préfère avoir une ligne de trop dans mon document LaTeX plutôt que de prendre le risque de voir les valeurs numériques changer brusquement suite à une manipulation que je pensais sans conséquences !

Oui je pense que c'est une bonne idée. Le jour où FP changera sa graine ou la fera varier après une mise à jour LaTeX, ça sera bien utile !

RE: Différence entre les packages permettant d'utiliser des valeurs aléatoires ? - Added by Gérard Carpeaux 11 months ago

J'ai découvert que la racine de FP est égale à zéro

\documentclass[12pt,a4paper]{article}
\usepackage{fp,xfp}
\begin{document}
\FPrandom\x\x

\FPseed=0    \FPrandom\y\y
\end{document}

En cherchant, j'ai découvert le paquet xfp qui permet de faire des calculs directs.
Sinon, j'ai découvert ceci pour les nombres aléatoires :

\expandafter\FPseed\expandafter=\pdfuniformdeviate 1000000\relax

Hors-sujet pour Alexis : je ne reçois plus les notifications des sujets dans l'espace Demandes (voir ici ma participation https://project.auto-multiple-choice.net/issues/609

RE: Différence entre les packages permettant d'utiliser des valeurs aléatoires ? - Added by Joss OUIN 11 months ago

Bonjour à tous,

Merci Gérard.
Pour FP, Alexis a mis une petite doc sur le wiki (résumé paquet FP) : https://project.auto-multiple-choice.net/projects/auto-multiple-choice/wiki/Fran%C3%A7ais
Je suis intéressé par xfp, y a-t-il une documentation ? Auriez-vous une adresse ?

Cordialement,
Joss.

RE: Différence entre les packages permettant d'utiliser des valeurs aléatoires ? - Added by Joss OUIN 11 months ago

Bonjour à tous,

Je me pose une question sur le "random" :
Si j'utilise cette commande :

   \FPeval\NUMER{trunc(1+random*5,0)}

Est-ce que cela utilise le random de FP ou bien "une autre source de génération de nombres pseudo-aléatoires" ?

J'ai vu Gérard qui utilise :

\FPrandom\x\x

Et là pas de doute, ce random-là va utiliser la graine : \FPseed = 12345 par exemple.

Mais moi, avec ma commande, quel random est-ce que j'utilise ? Celui de FP ? Est-ce que cela va prendre en compte ma graine \FPSeed=12345 ?

Bonne journée à tous,
Joss.

RE: Différence entre les packages permettant d'utiliser des valeurs aléatoires ? - Added by Joss OUIN 11 months ago

Re-Bonjour,

D'après mon exemple :

\FPeval\NUMER{trunc(1+random*5,0)}

D'après mes investigations, je dirai que dans un \FPeval :
1/ le "trunc" correspond à un "FPtrunc" ;
2/ le "random" correspond à un "FPrandom"

Donc ici le "random" utiliserait bien la graine \FPseed=12345

Joss.

RE: Différence entre les packages permettant d'utiliser des valeurs aléatoires ? - Added by Joss OUIN 11 months ago

Bonjour à tous,

Est-ce quelqu'un a déjà essayé d'utiliser du code Python au sein de son QCM en LaTeX ? Je veux parler des documents de François Camus sur le Wiki d'AMC (voir fichiers joints à ce post).
Comme pour la package "FP", on peut également créer des valeurs aléatoires mais aussi des expressions complexes (a + bj), des fonctions personnalisées et même des graphiques.
Personnellement, je pense que "cela vaut le coup" d'investir du temps dans le package "pythontex" car cela permet de générer des exercices tous différents !

Si vous avez des liens à proposer, merci d'avance.

Belle journée à tous,
Joss.

Wiki_AMC_et_PythonTex.pdf - Fichier PDF de François CAMUS (165.6 kB)

ECM.tex - Exemple au format ".tex (952 Bytes)

RE: Différence entre les packages permettant d'utiliser des valeurs aléatoires ? - Added by Joss OUIN 11 months ago

Bonsoir,

Je reviens sur ce post pour ajouter un lien vers un site qui donne un exemple d'utilisation de la bibliothèque Simpy de Python qui permet de faire des calculs symboliques (calculs formels). Idéal pour générer des exercices avec des polynômes par exemple.
Le lien : https://www.mathweb.fr/euclide/2018/09/11/engendrer-une-feuille-dexercices-aleatoires-avec-python-en-latex/

Il est possible également de générer des graphiques avec Python puis de les placer dans un QCM (LaTeX).
Le lien : https://www.mathweb.fr/euclide/2018/09/03/creer-et-inserer-directement-des-graphiques-3d-avec-pythontex-sous-latex/

Mais que c'est beau !

Bonne soirée,
Joss.

RE: Différence entre les packages permettant d'utiliser des valeurs aléatoires ? - Added by Gérard Carpeaux 11 months ago

Pour FP, Alexis a mis une petite doc sur le wiki (résumé paquet FP) :

En fait, je suis l'auteur de cette documentation et c'est Alexis qui peut mettre à jour les fichiers lorsqu'ils sont modifiés. C'est pour cela qu'apparaît son nom. J'en ai profité pour la relire et ma compréhension de fp à progressé depuis 3 ans. Ce que j'ai écrit sur copy est faux.
J'ai donc modifié la dernière partie, enlevé le paquet numprint car il me semble dépassé par le paquet siunitx et rajouté le signe égal pour \FPSeed.

Pour votre précédent message, connaissez-vous pyromthas ?

Et la documentation de xfp, ici

Pour Alexis, pourriez-vous mettre à jour le fichier dans le wiki ? Merci.

R__sum___paquet_fp.pdf - mise à jour 2018 (66.6 kB)

RE: Différence entre les packages permettant d'utiliser des valeurs aléatoires ? - Added by Joss OUIN 11 months ago

Bonsoir,

Merci pour ce document sur FP.
Oui, je connais Pyromaths de nom mais je ne l'ai pas utilisé.

L'idée pour AMC serait de créer des questions dont les variables (polynômes, fonctions,etc) seraient générées par le package "pythontex" et la bibliothèque Simpy (pour le calcul formel).
Il me semble que c'est beaucoup plus pratique que les commandes "FP". Je suis encore au stage de l'expérimentation !

Bonne soirée,
Joss.

RE: Différence entre les packages permettant d'utiliser des valeurs aléatoires ? - Added by Alexis Bienvenüe 11 months ago

Pour Alexis, pourriez-vous mettre à jour le fichier dans le wiki ? Merci.

J'ai supprimé le fichier : vous pouvez le remettre et il apparaîtra avec votre nom.

(1-18/18)