为什么我的随机列表项总是相同的?

为什么我的随机列表项总是相同的?

我有一个列表,然后从中随机选择了两件物品。

但这两项总是相同的。为什么?

\documentclass{article}

\usepackage{pgf}
\usepackage{pgffor}
 \pgfmathsetseed{\number\pdfrandomseed}

\newcommand{\InitVariables}
{%
\pgfmathdeclarerandomlist{List}{{2}{3}{4}{5}{6}{7}{8}{9}}
\pgfmathrandomitem{\VarA}{List}
\pgfmathrandomitem{\VarB}{List}
}



\begin{document}


ATTEMPT ONE
\InitVariables

Variable A is \VarA .

Variable B is \VarB .


ATTEMPT TWO
\InitVariables

Variable A is \VarA .

Variable B is \VarB .

ATTEMPT THREE
\InitVariables

Variable A is \VarA .

Variable B is \VarB .

\end{document}

在此处输入图片描述

答案1

\pgfmathrandomitem实际上并没有定义\varA为随机选择的项目,而是将其定义为选择这样的项目,然后\VarB得到相同的定义,两者都被定义为

> \VarB=macro:
->\csname pgfmath@randomlist@List@\pgfmath@randomtemp \endcsname .

如图所示\show

这里的项是不可扩展的,您可以简单地扩展定义以将实际值放入宏中,如第二和第四个所示\show

> \VarA=macro:
->5.

示例文档:

\documentclass{article}

\usepackage{pgf}
\usepackage{pgffor}
 \pgfmathsetseed{\number\pdfrandomseed}

\newcommand{\InitVariables}
{%
\pgfmathdeclarerandomlist{List}{{2}{3}{4}{5}{6}{7}{8}{9}}
\pgfmathrandomitem{\VarA}{List}
\show\VarA
\edef\VarA{\VarA}
\show\VarA
\pgfmathrandomitem{\VarB}{List}
\show\VarB
\edef\VarB{\VarB}
\show\VarB
}



\begin{document}


ATTEMPT ONE
\InitVariables

Variable A is \VarA .

Variable B is \VarB .


ATTEMPT TWO
\InitVariables

Variable A is \VarA .

Variable B is \VarB .

ATTEMPT THREE
\InitVariables

Variable A is \VarA .

Variable B is \VarB .

\end{document}

相关内容