Basicamente, estou tentando criar várias versões de uma planilha, cada uma com valores diferentes para as variáveis de cada pergunta. Para fazer isso estou definindo variáveis aleatórias, então cada vez que compilo os valores mudam e imprimo uma "nova" versão da planilha.
Eu entendo como criar variáveis aleatórias usando \pgfmathsetseed{\pdfrandomseed}
e definindo minhas variáveis nos intervalos desejados, como por exemplo\def\A{pgfrandom{1,10}\pgfmathresult}
O problema que encontro é que quero gerar uma resposta para cada problema no final da planilha. Mas quer fazer o cálculo para a resposta com um valor aleatório diferente daquele gerado na pergunta original.
por exemplo, se eu disser
\def\A{pgfrandom{1,10}\pgfmathresult}
\def\B{pgfrandom{10,20}\pgfmathresult}
\def\answer{\A + \B, \pgfmathresult}
e eu faço a pergunta:
What is \A + \B?
\answer
Isso produzirá algo como ....
What is 2 + 12?
5 + 19, 24
Então, como faço para exibir a resposta a) sem mostrar o cálculo em si (ou seja, 2 + 12) eb) como faço para não gerar novamente uma nova variável aleatória ao calcular a resposta?
Desculpe, espero que minhas perguntas estejam claras. Eu sou novo em tudo isso. Qualquer ajuda é apreciada. Obrigado!
Responder1
Com base na sua pergunta, você poderia fazer isso:
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
Quanto é 2 + 12?
O resultado é 14
Diversão com camadas ;)
Você pode usar camadas para ocultar a resposta, até que a camada de solução seja habilitada (você não pediu isso, então é apenas diversão).
\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}
Responder2
Uma sagetex
solução usandoSábio. Configure variáveis no sagesilent
modo. Acesse as variáveis em seu documento por meio de \sage
comando enquanto você digita.
\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}
Aqui está a saída em execuçãoNuvem Sagemath: