Forcer une valeur de réponse aléatoire positive

Added by Antoine Bluheim over 3 years ago

Bonsoir,

Je fais un QCM sur les probabilités avec des nombres aléatoires.
Voici le code de ma question.

\element{categorie2}{
\input{Variables}
%Question à vérifier
\begin{question}{cat2-quest1}
    On lance un dé non truqué à \num{\NBFACES} faces (numérotées de 1 à \num{\NBFACES}). Quelle est la probabilité $P(\num{\NUMFACE})$ de tomber sur le chiffre \num{\NUMFACE}?
        \begin{multicols}{4}
            \begin{reponses}
                \multido{\i=\randomb+-1}{\randomb}{\mauvaise{$P(\num{\NUMFACE}) \approx $ \num{\fpeval{\PROBAFACE+0.01*\i}}}}
                \bonne{$P(\num{\NUMFACE}) \approx $ \num{\PROBAFACE}}
                \multido{\i=1+1}{\fpeval{11-\randomb}}{\mauvaise{$P(\num{\NUMFACE}) \approx $ \num{\fpeval{\PROBAFACE-0.01*\i}}}}
            \end{reponses}
        \end{multicols}
    \end{question}
}

Et la génération des variables utilisées.

    %Catégorie 2 - Calcul de la proba d'une face sur un dé 
    \FPeval\NBFACES{round(10 + 20*random,0)} % Génération du nombre de faces d'un dé (entre 10 et 30)
    \FPeval\NUMFACE{round(1 + \NBFACES*random,0)} % Génération d'un numéro de face entre 1 et \NBFACES
    \FPeval\PROBAFACE{trunc((1 / \NBFACES),3)}    


Concrètement, je veux avoir 12 choix possibles, d'où la variable \randomb définie par \FPeval\randomb{trunc(1+11*random,0)}.
Elle prend un nombre aléatoire entre 1 et 12 et la valeur de randomb conditionne le nombre de propositions inférieures à la bonne réponse.
Seulement, dans le cas ici, je me retrouve avec des valeurs négatives (voir screenshot).
Y a t'il moyen de régler ce problème?

Replies (4)

RE: Forcer une valeur de réponse aléatoire positive - Added by Alexis Bienvenüe over 3 years ago

\AMCnumericChoices est peut-être un peu plus complexe d'utilisation pour les étudiants (cela demande un essai d'appropriation ou de bonnes explications) mais permet une conception d'exercices plus aisée.

RE: Forcer une valeur de réponse aléatoire positive - Added by Antoine Bluheim over 3 years ago

J'y avais pensé, mais les gamins que j'ai en cours vont pas piger... déjà que la moitié ont pas encore compris depuis Septembre que seules les questions avec un trèfle avaient plusieurs bonnes réponses...

RE: Forcer une valeur de réponse aléatoire positive - Added by Alexis Bienvenüe over 3 years ago

S'inspirer de \AMCIntervals pour faire une macro qui va balayer un jeu de valeurs approchées candidates ? Mais il y a toujours le risque que la bonne valeur tombe pile entre deux valeurs proposées…

\def\AMCIntervalFormat#1#2{[#1,\,#2[}
\ExplSyntaxOn

\fp_new:N \amc_interv_a
\fp_new:N \amc_interv_b
\cs_new:Npn \amc_intervals:nnnn #1 #2 #3 #4 {
  \fp_set:Nn \amc_interv_a { #2 }
  \fp_do_while:nn { \amc_interv_a < #3 } {
    \fp_set:Nn \amc_interv_b { \amc_interv_a + #4 }
    \fp_compare:nTF { \amc_interv_a <= #1 < \amc_interv_b }
      \correctchoice \wrongchoice
    {\AMCIntervalFormat{\fp_use:N \amc_interv_a}{\fp_use:N \amc_interv_b}}
    \fp_set:Nn \amc_interv_a \amc_interv_b
  }
}
\cs_new_eq:NN \AMCIntervals \amc_intervals:nnnn

\ExplSyntaxOff

RE: Forcer une valeur de réponse aléatoire positive - Added by Frédéric Bréal over 3 years ago

\FPeval\NUMFACE{round(1 + (\NBFACES-1)*random,0)} % Génération d'un numéro de face entre 1 et \NBFACES

Avec votre code vous risquez d'avoir 31 comme réponse.

(1-4/4)