Tout ce qui concerne le langage TeX/LaTeX et ses variantes.
Ce langage est utilisable sur le forum via les balises tex .
[participation réservée aux utilisateurs inscrits]
Règles du forum
Merci de
soigner la rédaction de vos messages et de consulter
ce sujet avant de poster. Pensez également à utiliser la fonction
recherche du forum.
zazou
Utilisateur confirmé
Messages : 43 Inscription : mercredi 23 novembre 2022, 10:16
Statut actuel : Enseignant
Message non lu
par zazou » samedi 18 janvier 2025, 15:38
Bonjour,
j'utilise depuis un certain temps une macro que j'ai trouvée sur
stackexchange pour choisir des éléments aléatoirement dans une liste et sans remise :
Code : Tout sélectionner
\documentclass{article}
\usepackage{xparse}
\input{random}
\ExplSyntaxOn
\NewDocumentCommand{\htguse}{ m }
{
\use:c { htg_arg_#1: }
}
\NewDocumentCommand{\selectNrandom}{ m m m }
{
\htg_select_n_random:nnn { #1 } { #2 } { #3 }
}
\cs_new_protected:Npn \htg_select_n_random:nnn #1 #2 #3
{
\seq_clear:N \l_htg_used_seq
\int_set:Nn \l_htg_length_int { \clist_count:n { #2 } }
\int_compare:nTF { #1 > \l_htg_length_int }
{
\msg_error:nnxx { randomchoice } { too-many } { #1 } { \int_to_arabic:n { \l_htg_length_int } }
}
{
\int_step_inline:nnnn { 1 } { 1 } { #1 }
{
\htg_get_random:
\cs_set:cpx { htg_arg_##1: }
{ \clist_item:nn { #2 } { \l_htg_random_int } }
}
#3
}
}
\cs_new_protected:Npn \htg_get_random:
{
\setrannum { \l_htg_random_int } { 1 } { \l_htg_length_int }
\seq_if_in:NxTF \l_htg_used_seq { \int_to_arabic:n { \l_htg_random_int } }
{ \htg_get_random: }
{ \seq_put_right:Nx \l_htg_used_seq { \int_to_arabic:n { \l_htg_random_int } } }
}
\seq_new:N \l_htg_used_seq
\int_new:N \l_htg_length_int
\int_new:N \l_htg_random_int
\msg_new:nnnn { randomchoice } { too-many }
{ Too~ many~choices }
{ You~want~to~select~#1~elements,~but~you~have~only~#2 }
\ExplSyntaxOff
\begin{document}
\selectNrandom{2}
{N, W, Z, Q, R, C}
{$\mathbf{\htguse{1}}$ and $\mathbf{\htguse{2}}$}
\selectNrandom{3}
{A, B, C}
{$\mathbf{\htguse{1}}$, $\mathbf{\htguse{2}}$ and $\mathbf{\htguse{3}}$}
\selectNrandom{3}
{N, W}
{$\mathbf{\htguse{1}}$, $\mathbf{\htguse{2}}$ and $\mathbf{\htguse{3}}$}
\end{document}
Savez-vous comment je peux régler la graine de randomisation à la manière de \pgfmathsetseed{} ?
Merci.
Dernière modification par zazou le samedi 18 janvier 2025, 18:00, modifié 1 fois.
touhami
Utilisateur éprouvé
Messages : 499 Inscription : dimanche 11 février 2007, 11:45
Message non lu
par touhami » samedi 18 janvier 2025, 17:14
Bonjour.
Il suffit de taper
Par exemple
zazou
Utilisateur confirmé
Messages : 43 Inscription : mercredi 23 novembre 2022, 10:16
Statut actuel : Enseignant
Message non lu
par zazou » samedi 18 janvier 2025, 18:00
OK cool, ça fonctionne très bien. J'ai un peu galéré parce qu'en fait ma macro a une petite différence avec celle indiquée ci-dessus, j'avais la ligne
Code : Tout sélectionner
\int_set:Nn \l_htg_random_int { \fp_eval:n { randint( \l_htg_length_int ) } }
à la place de
Code : Tout sélectionner
\setrannum { \l_htg_random_int } { 1 } { \l_htg_length_int }
La macro fonctionne tout pareil, mais du coup \randomi ne fonctionnait pas. Je suis curieux de savoir pourquoi, si tu as l'info.
Je suis aussi curieux de savoir comment retrouver la formule permettant de calculer une graine, ça me permettrait de sauver un document.
Merci encore.
Zazou.
touhami
Utilisateur éprouvé
Messages : 499 Inscription : dimanche 11 février 2007, 11:45
Message non lu
par touhami » samedi 18 janvier 2025, 18:27
Dans ce cas, pour régler la graine de randomisation
Pour afficher la graine utilisée
zazou
Utilisateur confirmé
Messages : 43 Inscription : mercredi 23 novembre 2022, 10:16
Statut actuel : Enseignant
Message non lu
par zazou » mercredi 22 janvier 2025, 11:26
Au top, merci !!!
zazou
Utilisateur confirmé
Messages : 43 Inscription : mercredi 23 novembre 2022, 10:16
Statut actuel : Enseignant
Message non lu
par zazou » mercredi 22 janvier 2025, 11:42
J'ai cherché un peu comment retrouver la graine utilisée dans un ancien document, mais j'ai aucune idée. J'ai tenté de factoriser la graine, mais je n'ai pas trouvé de piste à creuser. Savez-vous comment elle est construite par défaut ?
touhami
Utilisateur éprouvé
Messages : 499 Inscription : dimanche 11 février 2007, 11:45
Message non lu
par touhami » mercredi 22 janvier 2025, 22:25
Bonjour.
Vous pouvez essayer avec
ou encore
touhami
Utilisateur éprouvé
Messages : 499 Inscription : dimanche 11 février 2007, 11:45
Message non lu
par touhami » jeudi 23 janvier 2025, 14:07
Il est possible que la graine de randomisation soit inscrite dans le fichier .log