So generieren Sie Zufallsvariablen und verwenden sie dann in Berechnungen in pdflatex

So generieren Sie Zufallsvariablen und verwenden sie dann in Berechnungen in pdflatex

Ich versuche im Grunde, mehrere Versionen eines Arbeitsblatts zu erstellen, jede mit unterschiedlichen Werten für die Variablen in jeder Frage. Dazu definiere ich Zufallsvariablen, dann ändere ich bei jeder Kompilierung die Werte und drucke eine „neue“ Version des Arbeitsblatts aus.

Ich verstehe, wie ich die Zufallsvariablen erstelle, indem ich \pgfmathsetseed{\pdfrandomseed}meine Variablen in den von mir gewünschten Bereichen verwende und definiere, wie z. B.\def\A{pgfrandom{1,10}\pgfmathresult}

Das Problem, auf das ich stoße, ist, dass ich für jedes Problem am Ende des Arbeitsblatts eine Antwort generieren möchte. Die Berechnung für die Antwort soll jedoch mit einem anderen Zufallswert durchgeführt werden als dem, der in der ursprünglichen Frage generiert wurde.

Wenn ich beispielsweise sage

\def\A{pgfrandom{1,10}\pgfmathresult}

\def\B{pgfrandom{10,20}\pgfmathresult}

\def\answer{\A + \B, \pgfmathresult}

und ich stelle die Frage:

What is \A + \B?

\answer

Das Ergebnis könnte etwa wie folgt aussehen:

What is 2 + 12?

5 + 19, 24

Wie kann ich es also erreichen, dass die Antwort angezeigt wird, a) ohne die Berechnung selbst anzuzeigen (also 2 + 12), und b) wie kann ich es erreichen, dass bei der Berechnung der Antwort keine neue Zufallsvariable generiert wird?

Entschuldigen Sie, ich hoffe, meine Fragen sind klar. Ich bin neu in all dem. Jede Hilfe ist willkommen. Danke!

Antwort1

Basierend auf Ihrer Frage könnten Sie Folgendes tun:

Code

\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}

Ergebnis

Was ist 2 + 12?
Das Ergebnis ist 14

Spaß mit Schichten ;)

Sie können Ebenen verwenden, um die Antwort zu verbergen, bis die Lösungsebene aktiviert wird (Sie haben nicht danach gefragt, das hier ist also nur zum Spaß).

\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}

Ergebnis

Antwort2

Eine sagetexLösung mitSalbei. Richten Sie Variablen im Modus ein . Greifen Sie während des Satzes sagesilentüber Befehle auf die Variablen in Ihrem Dokument zu .\sage

\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}

Hier ist die Ausgabe inSagemath Cloud: Bildbeschreibung hier eingeben

verwandte Informationen