\documentclass[a4paper]{article}

\usepackage[utf8x]{inputenc}    
\usepackage[T1]{fontenc}
\usepackage{fp,xparse,etoolbox,pythontex,pgf}
\usepackage[francais,bloc]{automultiplechoice}    



%%%%%% code récupéré que je ne comprends pas!
\ExplSyntaxOn
\DeclareExpandableDocumentCommand{\booltest}{mmm}
 {
  \bool_if:nTF { #1 } { #2 } { #3 }
 }
\DeclareExpandableDocumentCommand{\fpcompare}{m}
 {
  \fp_compare_p:n { #1 }
 }
\ExplSyntaxOff
%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%  enregistrement d'une réponse lors de sa définition 
\newcounter{rep}
\newcommand{\Bonne}[1]{\bonne{#1}\stepcounter{rep} \global\csdef{Rep\therep}{#1}}
\newcommand{\Mauvaise}[1]{\mauvaise{#1}\stepcounter{rep} \global\csdef{Rep\therep}{#1}}
%%%%%%%%%%%%%%%%


%%%%%%%%%%%%%% commande de test de 5 réponses numériques (bonnes ou mauvaises) enregistrées dans Rep1,Rep2,Rep3,Rep4,Rep5  avec affichage d'un encadré dans la marge lorsqu'il y a des réponses identiques
\newcommand{\TestCinqReponses}{%
\booltest{%
% on compare Rep1 aux autres valeurs
\fpcompare{\csuse{Rep1} = \csuse{Rep2}} || 
\fpcompare{\csuse{Rep1} = \csuse{Rep3}} ||
\fpcompare{\csuse{Rep1} = \csuse{Rep4}} ||
\fpcompare{\csuse{Rep1} = \csuse{Rep5}} ||
%on compare Rep2 aux autres sauf Rep1
\fpcompare{\csuse{Rep2} = \csuse{Rep3}} ||
\fpcompare{\csuse{Rep2} = \csuse{Rep4}} ||
\fpcompare{\csuse{Rep2} = \csuse{Rep5}} ||
%on compare Rep3 aux autres sauf Rep(1,2)
\fpcompare{\csuse{Rep3} = \csuse{Rep4}} ||
\fpcompare{\csuse{Rep3} = \csuse{Rep5}} ||
%on compare Rep4 aux autres sauf Rep(1,2,3)
\fpcompare{\csuse{Rep4} = \csuse{Rep5}}
}
 {\marginpar{\raisebox{1cm}{\fbox{\bf Achtung!}}}}
 {}
}
%%%%%%%%%%%




%%%%_____________________________________________
%%%%%%%%%%%% définitions des questions
\element{Test}{\setcounter{rep}{0}
\FPeval\VQa{round(10*random,0)}
\FPeval\VQb{round(10*random,0)}
\FPeval\VQc{round(10*random,0)}
\FPeval\VQd{round(10*random,0)}
\FPeval\VQe{round(10*random,0)}

\begin{questionmult}{testFP}    
Des valeurs aléatoires avec fp : 
  \begin{reponses}
    \Bonne{\VQa}
    \Mauvaise{\VQb}
    \Bonne{\VQc}
     \Mauvaise{\VQd}
    \Bonne{\VQe}
  \end{reponses}
\end{questionmult}

\TestCinqReponses
}


\element{Test}{\setcounter{rep}{0} \pyc{from random import*; R1=randint(1,10); R2=randint(1,10); R3=randint(1,10); R4=randint(1,10); R5=randint(1,10)}
\begin{question}{testPy}
 Des valeurs aléatoires avec python : 
 \begin{reponseshoriz}
  \Bonne{\py{R1}}
  \Mauvaise{\py{R2}}
  \Mauvaise{\py{R3}}
  \Mauvaise{\py{R4}}
  \Mauvaise{\py{R5}}
 \end{reponseshoriz}
\end{question}
%\TestCinqReponses%%% ne fonctionne pas ici, je ne sais pas trop pourquoi!
%%%% le test avec python lui fonctionne comme souhaité
\pyc{if R1==R2 or R1==R3 or R1==R4 or R1==R5 or R2==R3 or R2==R4 or R2==R5 or R3==R4 or R3==R5 or R4==R5 : print('\\marginpar{\\raisebox{1cm}{\\fbox{\\bf Achtung!}}}')}
}


\element{Test}{\setcounter{rep}{0}
\pgfmathrandominteger\Va{1}{10}
\pgfmathrandominteger\Vb{1}{10}
\pgfmathrandominteger\Vc{1}{10}
\pgfmathrandominteger\Vd{1}{10}
 \pgfmathrandominteger\Ve{1}{10}

\begin{question}{testPGF}
 Des valeurs aléatoires avec pgf : 
 \begin{reponseshoriz}
  \Bonne{\Va}
  \Mauvaise{\Vb}
  \Mauvaise{\Vc}
  \Mauvaise{\Vd}
   \Mauvaise{\Ve}
 \end{reponseshoriz}
\end{question}
\TestCinqReponses
}

\begin{document}
 

\exemplaire{10 }{    
\restituegroupe{Test}
}   

\end{document}
