Como gerar variáveis ​​aleatórias e depois usar em cálculos em pdflatex

Como gerar variáveis ​​aleatórias e depois usar em cálculos em pdflatex

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}

resultado

Responder2

Uma sagetexsolução usandoSábio. Configure variáveis ​​no sagesilentmodo. Acesse as variáveis ​​em seu documento por meio de \sagecomando 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: insira a descrição da imagem aqui

informação relacionada