![Cómo generar variables aleatorias y luego usarlas en cálculos en pdflatex](https://rvso.com/image/281462/C%C3%B3mo%20generar%20variables%20aleatorias%20y%20luego%20usarlas%20en%20c%C3%A1lculos%20en%20pdflatex.png)
Básicamente, intento crear varias versiones de una hoja de trabajo, cada una con valores diferentes para las variables en cada pregunta. Para hacer esto, defino variables aleatorias, luego, cada vez que compilo, los valores cambian e imprimo una "nueva" versión de la hoja de trabajo.
Entiendo cómo crear variables aleatorias usando \pgfmathsetseed{\pdfrandomseed}
y definiendo mis variables en mis rangos deseados, como por ejemplo\def\A{pgfrandom{1,10}\pgfmathresult}
El problema con el que me encuentro es que quiero generar una respuesta para cada problema al final de la hoja de trabajo. Pero quiere hacer el cálculo de la respuesta con un valor aleatorio diferente al generado en la pregunta original.
por ejemplo, si digo
\def\A{pgfrandom{1,10}\pgfmathresult}
\def\B{pgfrandom{10,20}\pgfmathresult}
\def\answer{\A + \B, \pgfmathresult}
y hago la pregunta:
What is \A + \B?
\answer
Producirá algo como...
What is 2 + 12?
5 + 19, 24
Entonces, ¿cómo consigo que muestre la respuesta a) sin mostrar el cálculo en sí (es decir, 2 + 12) y b) cómo consigo que no vuelva a generar una nueva variable aleatoria al calcular la respuesta?
Lo siento, espero que mis preguntas sean claras. Soy nuevo en todo esto. Se agradece cualquier ayuda. ¡Gracias!
Respuesta1
Según tu pregunta, podrías hacer esto:
Código
\documentclass{article}
\usepackage{pgf}
\pgfmathsetseed{\number\pdfrandomseed} % provide seed for pseudo random generator
% (change to constant, to get the same random numbers on every time compiling)
% new command to init variables
\newcommand\initVariables{%
\pgfmathsetmacro{\A}{random(1,10)}%
\pgfmathsetmacro{\B}{random(10,20)}%
}
\newcommand\answer{\pgfmathprint{int(\A + \B)}} % define command to calculate result
\begin{document}
\initVariables % initialize variables (do this every time you need new numbers)
What is $\A + \B$?
Result is \answer
\end{document}
Resultado
¿Cuánto es 2 + 12?
El resultado es 14
Diversión con capas ;)
Podrías usar capas para ocultar la respuesta, hasta que la capa de solución esté habilitada (no la solicitaste, así que esto es solo por diversión).
\documentclass{article}
\usepackage{pgf}
\usepackage{ocg-p}
\pgfmathsetseed{\number\pdfrandomseed} % provide seed for pseudo random generator
% new command to init variables
\newcommand\initVariables{%
\pgfmathsetmacro{\A}{random(1,10)}%
\pgfmathsetmacro{\B}{random(10,20)}%
}
\newcommand\answer{\pgfmathprint{int(\A + \B)}} %define command to calculate result
\begin{document}
\initVariables%initialize variables (do this every time you need new numbers)
What is $\A + \B$?
Result is
\begin{ocg}{result layer}{1}{0}
\answer
\end{ocg}
\end{document}
Respuesta2
Asagetex
solución usandoSabio. Configurar variables en sagesilent
modo. Acceda a las variables de su documento mediante \sage
comandos mientras escribe.
\documentclass[12point]{article}%
\usepackage{sagetex}% use Sage for it's math ability
\pagestyle{empty} % remove the page numbers
\begin{document}
\begin{sagesilent}
var('x')
a = Integer(randint(1,9))
b = Integer(randint(1,9))
\end{sagesilent}
% *********** END DEFINE VARIABLES ****************
\noindent What's $\sage{a}+\sage{b}$? $\sage{a}\times\sage{b}$? $\sage{a}\div\sage{b}$?\\
Answer: $\sage{a}+\sage{b}=\sage{a+b}$, $\sage{a}\times\sage{b}=\sage{a*b}$ and $\sage{a}\div\sage{b}=\sage{a/b}$\\
You can get a decimal for the division $\sage{a}\div\sage{b}\approx\sage{(a/b).n(digits=5)}$
\end{document}
Aquí está la salida ejecutándoseNube sabia: