Génération aléatoire de nombres décimaux

Tout ce qui concerne l'utilisation ou l'installation de LaTeX.

Modérateur: gdm_tex

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

Génération aléatoire de nombres décimaux

Messagepar chris_wafer » Mercredi 02 Juillet 2014, 23:18

Bonjour,

Afin de générer des exercices, je voudrai savoir comment générer des nombres aléatoires décimaux?

Merci d'avance.
chris_wafer
Déca-utilisateur
 
Messages: 25
Inscription: Mardi 06 Février 2007, 22:46

Publicité

Re: Génération aléatoire de nombres décimaux

Messagepar guiguiche » Jeudi 03 Juillet 2014, 08:11

floor(random*10^n)/10^n ?
Pas d'aide par MP : les questions sont publiques, les réponses aussi.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
guiguiche
Modérateur
 
Messages: 8062
Inscription: Vendredi 06 Janvier 2006, 15:32
Localisation: Le Mans
Statut actuel: Actif et salarié | Enseignant

Re: Génération aléatoire de nombres décimaux

Messagepar MB » Jeudi 03 Juillet 2014, 08:12

Bonjour, je propose une solution lualatex qui génère des nombres entiers (à adapter pour obtenir des décimaux).

Code: Tout sélectionner
\documentclass{minimal}
\usepackage{fontspec}
\usepackage{luatextra}
\usepackage{unicode-math}

\newcommand{\random}[2]{\luaexec{tex.print(math.random(#1,#2))}}

\begin{document}
\random{10}{50} est un entier aléatoire entre 10 et 50.
\end{document}
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6872
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: Génération aléatoire de nombres décimaux

Messagepar gigiair » Jeudi 03 Juillet 2014, 12:03

Le package lcg fait ça, mais je ne l'ai pas testé.

Code: Tout sélectionner
texdoc lcg


Pour la documentation.
Les nombres générés sont entiers, mais ce n'est pas bien difficile d'en déduire des décimaux quelconques.
JJR.
LaTeXien migrateur.
gigiair
Exa-utilisateur
 
Messages: 2372
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié

Re: Génération aléatoire de nombres décimaux

Messagepar chris_wafer » Jeudi 03 Juillet 2014, 13:30

Code: Tout sélectionner
floor(random*10^n)/10^n


Je l'écris comment? Dans un commande?
Car ça générer un erreur.

Peux-tu me donner un exemple?

Merci.
chris_wafer
Déca-utilisateur
 
Messages: 25
Inscription: Mardi 06 Février 2007, 22:46

Re: Génération aléatoire de nombres décimaux

Messagepar evariste_G » Jeudi 03 Juillet 2014, 13:52

Bonjour, j'ai bidouillé ça :

Code: Tout sélectionner
\documentclass[10pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{fp}
\newcommand{\alea}{%
 \FPrandom\nb   
 \FPrandom\puissance   
 \FPmul\puissance\puissance{10}
 \FPtrunc\puissance\puissance0
 \FPrandom\exposant
 \FPmul\exposant\exposant{10}
 \FPtrunc\exposant\exposant0
 \FPeval\result{\nb * 10^{\puissance} / 10^{\exposant}}
 \result
}
\begin{document}
\alea

\alea

\alea

\alea

\alea

\alea
  \end{document}
evariste_G
Téra-utilisateur
 
Messages: 1405
Inscription: Vendredi 19 Décembre 2008, 19:13
Localisation: Bordeaux
Statut actuel: Actif et salarié | Enseignant

Re: Génération aléatoire de nombres décimaux

Messagepar gigiair » Jeudi 03 Juillet 2014, 15:31

En fouinant un peu, j'ai trouvé deux autres solutions. Tout dépend de ce que tu veux faire des nombres, car les sorties sont des nombres entiers. Si tu veux calculer sur ces nombres, la solution d'evariste_g me semble la meilleure, mais s'il ne s'agit que d'afficher la solution avec \pgfuniformdeviate me paraît la plus simple (aucune extension exigée).

Code: Tout sélectionner
\documentclass[a4paper,french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[first=0,last=10000]{lcg}
\usepackage{pgffor,numprint}
\usepackage{babel}

\begin{document}
%%%%##########################################################################
\begin{description}

\item[20 nombres générés par pdfuniformdeviate:]
\foreach \i in {1,...,19} {\numprint{ 0.\pdfuniformdeviate10000}; }  \numprint{0.\pdfuniformdeviate10000}.
 
\item[ 20 autres générés par pdfnormaldeviate:]
\foreach \i in {1,...,19} {\numprint{ \pdfnormaldeviate}; }  \pdfnormaldeviate.

\item[Encore 20 autres  générés par lcg]
\foreach \i in {1,...,19}{0,\rand{\arabic{rand}}; } 0,\rand{\arabic{rand}}.
 % Avec \numprint ici, j'ai une erreur de débordement.

\end{description}
%%%%##########################################################################

\end{document}
JJR.
LaTeXien migrateur.
gigiair
Exa-utilisateur
 
Messages: 2372
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié

Re: Génération aléatoire de nombres décimaux

Messagepar MB » Jeudi 03 Juillet 2014, 16:14

Pour générer des exercices, je pense que l'option lualatex n'est pas à exclure afin d'éviter de bidouiller avec latex et d'élargir les possibilités.
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6872
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: Génération aléatoire de nombres décimaux

Messagepar chris_wafer » Jeudi 03 Juillet 2014, 17:45

Je veux générer des nombres décimaux, soit à virgule.
chris_wafer
Déca-utilisateur
 
Messages: 25
Inscription: Mardi 06 Février 2007, 22:46

Re: Génération aléatoire de nombres décimaux

Messagepar MB » Jeudi 03 Juillet 2014, 18:09

chris_wafer a écrit:Je veux générer des nombres décimaux, soit à virgule.


J'avais bien compris.
Tu peux dans ce cas préciser le nombre de chiffres dans la partie décimale ainsi que le plus petit et le plus grand nombre que tu souhaites générer ?
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6872
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: Génération aléatoire de nombres décimaux

Messagepar chris_wafer » Jeudi 03 Juillet 2014, 21:18

MB a écrit:Tu peux dans ce cas préciser le nombre de chiffres dans la partie décimale ainsi que le plus petit et le plus grand nombre que tu souhaites générer ?


Oui c'est exactement ce que je veux faire; mais ça ne marche pas :

Code: Tout sélectionner
! Fatal fontspec error: "cannot-use-pdftex"
!
! The fontspec package requires either XeTeX or LuaTeX to function.
!
! You must change your typesetting engine to, e.g., "xelatex" or "lualatex"
! instead of plain "latex" or "pdflatex".
!
! See the fontspec documentation for further information.


Je compile via TexMaker sous LinuxMint.
chris_wafer
Déca-utilisateur
 
Messages: 25
Inscription: Mardi 06 Février 2007, 22:46

Re: Génération aléatoire de nombres décimaux

Messagepar MB » Jeudi 03 Juillet 2014, 22:04

Il faut compiler avec lualatex (sélectionner ça dans texmaker) et pas pdflatex.
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6872
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: Génération aléatoire de nombres décimaux

Messagepar guiguiche » Jeudi 03 Juillet 2014, 22:21

chris_wafer a écrit:
Code: Tout sélectionner
floor(random*10^n)/10^n


Je l'écris comment? Dans un commande?
Car ça générer un erreur.

Peux-tu me donner un exemple?

Merci.

Oups, je n'avais pas vu qu'on était dans le forum latex.
Pas d'aide par MP : les questions sont publiques, les réponses aussi.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
guiguiche
Modérateur
 
Messages: 8062
Inscription: Vendredi 06 Janvier 2006, 15:32
Localisation: Le Mans
Statut actuel: Actif et salarié | Enseignant

Re: Génération aléatoire de nombres décimaux

Messagepar MB » Jeudi 03 Juillet 2014, 22:56

Je complète l'exemple basé sur lualatex.

Code: Tout sélectionner
\documentclass{minimal}
\usepackage{fontspec}
\usepackage{luatextra}
\usepackage{unicode-math}

\newcommand{\randomint}[2]{\luaexec{tex.print(math.random(#1,#2))}}
\newcommand{\randomdec}[3]{\luaexec{k=math.pow(10,#3) tex.print(math.random(#1*k,#2*k)/k)}}

\begin{document}
\randomint{10}{50} est un entier au hasard entre 10 et 50.

\randomdec{20}{50}{3} est un décimal au hasard entre 20 et 50 avec 3 chiffres dans sa partie décimale.
\end{document}
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6872
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: Génération aléatoire de nombres décimaux

Messagepar pg » Vendredi 04 Juillet 2014, 05:55

On peut faire la même chose sans restriction de moteur grâce au package pgf :

Code: Tout sélectionner
\documentclass{article}

\usepackage{tikz}

\newcommand{\randomdec}[3][2]{% nombre décimal aléatoire entre #2 et #3
                              % avec #1 décimales (#1 = 2 par défaut)
  \begingroup
    \pgfkeys{/pgf/number format/.cd,fixed,precision=#1}% #1 décimales
    \pgfmathparse{(#3-#2)*rnd+#2}% calcul du nombre aléatoire
    \pgfmathprintnumber{\pgfmathresult}% impression du nombre aléatoire
  \endgroup
}

\begin{document}

\foreach \x in {1,...,100} {% boucle à 100 éléments
  \randomdec[3]{-3.141}{3.141} % nombre décimal aléatoire entre -3.141 et 3.141 avec 3 décimales
}

\end{document}
pg
Modérateur
 
Messages: 2592
Inscription: Jeudi 14 Juin 2007, 23:31

Re: Génération aléatoire de nombres décimaux

Messagepar chris_wafer » Vendredi 04 Juillet 2014, 13:40

pg a écrit:On peut faire la même chose sans restriction de moteur grâce au package pgf


MERCI ça marche super bien!!! C'est exactement ce que je voulais!
chris_wafer
Déca-utilisateur
 
Messages: 25
Inscription: Mardi 06 Février 2007, 22:46

Re: Génération aléatoire de nombres décimaux

Messagepar chris_wafer » Mercredi 20 Août 2014, 21:40

Maintenant je fais :

Code: Tout sélectionner
\randomdec[0]{-3}{3} * \randomdec[0]{-3}{3}


Et je voudrais avoir le résultat de l'opération aussi pour l'afficher ailleurs?

Merci d'avance pour votre réponse.
chris_wafer
Déca-utilisateur
 
Messages: 25
Inscription: Mardi 06 Février 2007, 22:46

Re: Génération aléatoire de nombres décimaux

Messagepar pg » Jeudi 21 Août 2014, 08:58

Il faut stocker le résultat dans une variable qu'on peut alors réutiliser à volonté. Mais pour des nombres entiers, mieux vaut utiliser le générateur aléatoire d'entiers.

Pour que la syntaxe soit \randomint{-3}{3}[\resultat] (avec un argument optionnel en dernier), j'ai utilisé le package xargs qui étend les possibilités de \newcommand via \newcommandx.

Code: Tout sélectionner
\documentclass{article}

\usepackage{tikz}
\usepackage{xargs}

\newcommandx{\randomint}[3][3=\randomintresult]{%
  %%% syntaxe : \randomint{-3}{3}[\resultat]
  %%% nombre entier aléatoire entre #1 et #2
  %%% resultat stocké dans #3 (#3 = \randomintresult par défaut)
  \pgfmathparse{random(0,int(#2-#1))+#1}% calcul du nombre aléatoire
  \let#3=\pgfmathresult % stockage du résultat
  \begingroup
    %\pgfkeys{/pgf/number format/.cd,fixed,precision=0}% 0 décimales
    \pgfmathprintnumber{#3}% impression du nombre aléatoire
  \endgroup
}

% Le même avec des nombres décimaux
\newcommandx{\randomdec}[4][1=2,4=\randomdecresult]{%
  %%% syntaxe : \randomdec[0]{-3}{3}[\resultat]
  %%% nombre décimal aléatoire entre #2 et #3
  %%% avec #1 décimales (#1 = 2 par défaut)
  %%% resultat stocké dans #4 (#4 = \randomdecresult par défaut)
  \pgfmathparse{round(((#3-#2)*rnd+#2)*pow(10,#1))/pow(10,#1)}% calcul du nombre aléatoire
  \let#4=\pgfmathresult % stockage du résultat
  \begingroup
    \pgfkeys{/pgf/number format/.cd,fixed,precision=#1}% #1 décimales
    \pgfmathprintnumber{#4}% impression du nombre aléatoire
  \endgroup
}

\begin{document}

\section{Nombres entiers}

\foreach \x in {1,...,20} {% boucle à 20 éléments
$\randomint{-3}{3}[\randomone]
 \times
 \randomint{-3}{3}[\randomtwo]
 =
 \pgfkeys{/pgf/number format/.cd,fixed,precision=0}
 \pgfmathparse{\randomone*\randomtwo}\pgfmathprintnumber{\pgfmathresult}$.\par
}

\section{Nombres décimaux}

\foreach \x in {1,...,20} {% boucle à 20 éléments
$\randomdec[3]{-3.14}{3.14}[\randomone]
 \times
 \randomdec[3]{-3.14}{3.14}[\randomtwo]
 \approx
 \pgfkeys{/pgf/number format/.cd,fixed,precision=3}
 \pgfmathparse{\randomone*\randomtwo}\pgfmathprintnumber{\pgfmathresult}$.\par
}

\end{document}
pg
Modérateur
 
Messages: 2592
Inscription: Jeudi 14 Juin 2007, 23:31

Re: Génération aléatoire de nombres décimaux

Messagepar MB » Jeudi 21 Août 2014, 10:07

Bonjour, comme on pouvait s'en douter, les besoins deviennent plus étendus. Je pense donc toujours qu'un passage de pdflatex vers lualatex (qui de toutes façons semble être son successeur annoncé) serait la solution la plus souple et la plus puissante pour réaliser différents types de calculs.
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6872
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: Génération aléatoire de nombres décimaux

Messagepar chris_wafer » Samedi 23 Août 2014, 12:59

Merci. C'est parfait!!!!

Et que est le code avec lualatex pour faire la même chose?
chris_wafer
Déca-utilisateur
 
Messages: 25
Inscription: Mardi 06 Février 2007, 22:46

Suivante

Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Google Adsense [Bot], Grapeshot [Crawler] et 32 invités