PythonTeX 和 pgffor (foreach)

PythonTeX 和 pgffor (foreach)

在此处输入图片描述我正在尝试使用 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}

在此处输入图片描述

相关内容