Retrouver la graine utilisée par les commandes pgfmath

Version 1 (Joan Millès, 11/03/2018 09:18 am)

1 1
h1. Retrouver la graine utilisée par les commandes pgfmath
2 1
3 1
Lorsque l’on utilise les différentes commandes pgfmath dans un sujet AMC, il est nécessaire de fixer une graine au début du sujet au moyen de la commande
4 1
<pre>
5 1
\pgfmathsetseed{nombre inférieur à 2^31 - 1}
6 1
</pre>
7 1
8 1
Si la graine n’est pas fixée dans l’entête du sujet, une graine est calculée au moment de la création du sujet et une nouvelle graine est calculée lors de la correction des copies. Les solutions des corrections ne correspondent donc pas aux énoncés des sujets.
9 1
10 1
Il est cependant possible de retrouver la première graine si on a oublié de la fixer. Il faut pour cela avoir garder le fichier @DOC-sujet.pdf@. Le calcul de la graine est alors le suivant :
11 1
<pre>
12 1
\time * \year modulo (2^31 - 1)
13 1
</pre>
14 1
15 1
où @\time@ est le nombre de minutes écoulées depuis le matin 00h00 jusqu’à la date de création du fichier @DOC-sujet.pdf@ et @\year@ est l'année en cours (sauf erreur de ma part, le modulo ne sera pas utile pour ce calcul pendant de nombreuses années).
16 1
17 1
En fonction de la durée de compilation des sujets, il peut y avoir un petit décalage dans le nombre de minutes.
18 1
19 1
h3. Si les explications ci-dessus ne suffisant pas à résoudre le problème
20 1
21 1
Pour faire des tests, il est possible d’afficher la graine, le nombre de minutes et l'année sur les sujets de la façon suivante :
22 1
* avant @\begin{document}@, taper :
23 1
24 1
<pre>
25 1
\makeatletter
26 1
\def\pgfcurrentseed{ %
27 1
\pgfmathparse{\pgfmath@rnd@z}\pgfmathresult%
28 1
}
29 1
\makeatother
30 1
</pre>
31 1
32 1
* puis après @\onecopy{nombre}{@ (ou le @\exemplaire{nombre}{@), taper
33 1
<pre>
34 1
\pgfcurrentseed - \the\time - \the\year
35 1
</pre>