如何生成随机变量然后在 pdflatex 中进行计算

如何生成随机变量然后在 pdflatex 中进行计算

我基本上是想创建工作表的多个版本,每个版本中每个问题的变量都有不同的值。为此,我定义了随机变量,然后每次编译时值都会发生变化,然后打印工作表的“新”版本。

我理解如何通过\pgfmathsetseed{\pdfrandomseed}在所需范围内使用和定义变量来创建随机变量,例如\def\A{pgfrandom{1,10}\pgfmathresult}

我遇到的问题是我想在工作表末尾为每个问题生成一个答案。但它想用与原始问题中生成的随机值不同的随机值来计算答案。

例如如果我说

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

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

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

我问的是:

What is \A + \B?

\answer

它会产生类似...的东西。

What is 2 + 12?

5 + 19, 24

那么我该如何让它显示答案 a) 而不显示计算本身(即 2 + 12)以及 b) 我该如何让它在计算答案时不重新生成新的随机变量?

抱歉,希望我的问题已经清楚。我对这些都很陌生。任何帮助我都感激不尽。谢谢!

答案1

根据您的问题,您可以这样做:

代码

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

结果

2 + 12 等于多少?
结果是 14

层次的乐趣 ;)

您可以使用图层来隐藏答案,直到启用解决方案层(您没有要求这样做,所以这只是为了好玩)。

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

结果

答案2

sagetex使用的解决方案智者. 在模式中设置变量。排版时sagesilent通过命令访问文档中的变量。\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}

以下是运行的输出萨基马云在此处输入图片描述

相关内容