我正在尝试使用 PythonTeX 和 pgffor 生成示例列表,但这似乎不起作用?!同一个示例重复了 5 次,而不是得到 20 个不同的示例。下面的 MWE 有什么问题?谢谢。
\documentclass[12pt]{article}
\usepackage{amsmath, pgffor}
\usepackage{pythontex}
\pagestyle{empty}
\begin{document}
\begin{pycode}
import random
def gcd(a,b):
if(b==0):
return a
else:
return gcd(b,a%b)
c = random.randint(400,1000)
d = random.randint(50,400)
p = gcd(c,d)
\end{pycode}
\foreach \n in {1,2,...,20}{
The greatest common divisor of $\py{c}$ and $\py{d}$ is
\hfill $\gcd\left( \py{c};\py{d} \right) = \py{p}$
}
\end{document}
编辑:感谢@user187803,迭代次数现在可以了,但我总是得到相同的例子。
答案1
要获得 20 次迭代,您必须1,2,,..,20
用替换1,2,...,20
。您已经在编辑中完成了此操作。
c
您只能抽取一次随机数d
,因此您不能期望得到 20 个不同的结果。您需要在每次迭代中抽取新值,例如
\documentclass[12pt]{article}
\usepackage{amsmath, pgffor}
\usepackage{pythontex}
\pagestyle{empty}
\begin{document}
\begin{pycode}
import random
def gcd(a,b):
if(b==0):
return a
else:
return gcd(b,a%b)
def next():
c = random.randint(400,1000)
d = random.randint(50,400)
p = gcd(c,d)
return c, d, p
\end{pycode}
\foreach \n in {1,2,...,20}{
\pyc{c, d, p = next()}
The greatest common divisor of $\py{c}$ and $\py{d}$ is
\hfill $\gcd\left( \py{c};\py{d} \right) = \py{p}$
}
\end{document}