![So generieren Sie Zufallsvariablen und verwenden sie dann in Berechnungen in pdflatex](https://rvso.com/image/281462/So%20generieren%20Sie%20Zufallsvariablen%20und%20verwenden%20sie%20dann%20in%20Berechnungen%20in%20pdflatex.png)
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}
Antwort2
Eine sagetex
Lö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: