我想pgf
通过其参数/图像列表来定义一个函数。
让我举个例子。设$E=\{1,2,3,4,5,6,7,9\}$
(在我感兴趣的例子中,它总是第一个整数)并设定义 $f: E \to F$
如下
\[(f(i))_{1\leq i\leq n}=(3,7,9,-44,135,6,7645,4,9) \]
(这里$F=\{-44,3,7,9,135,7645\}$
)
我想定义$f$
为\myfunction
以便pgf
可以执行以下代码
\pgfmathrandominteger{\a}{1}{9}
\pgfmathsetmacro{\fa}{int(\myfunction{\a})}.
The image of $\a$ by $f$ is $\fa$.
(我用它来生成考试的随机题目)
我在文档中找不到有关如何操作的内容,我不确定这是否可行。任何帮助都将不胜感激。
答案1
这是一个解决方案:
\documentclass{article}
\usepackage{tikz}
\pgfmathsetseed{\number\pdfrandomseed}
\foreach[count=\c] \value in {3,7,9,-44,135,6,7645,4,9}{
\expandafter\xdef\csname myfunction\c\endcsname{\value}
}
\def\myfunction#1{\csname myfunction#1\endcsname}
\tikzset{
declare function={
myfunction(\a) = \myfunction{\a};
},
}
\begin{document}
\pgfmathrandominteger{\a}{1}{9}
\pgfmathsetmacro{\fa}{int(myfunction(\a))}.
The image of $\a$ by $f$ is $\fa$.
\end{document}
答案2
一个可能更容易理解的替代方法:只需将图像存储在一个数组中并读出它们。(pgf
从 0 开始计数,所以我在第 0 个位置添加了一个条目。)
\documentclass{article}
\usepackage{pgf,pgffor}
\begin{document}
\def\myimg{{0,3,7,9,-44,135,6,7645,4,9}} % zeroth entry because pgf starts counting at 0
\foreach \X in {1,...,12}
{\pgfmathrandominteger{\a}{1}{9}\pgfmathtruncatemacro{\imga}{\myimg[\a]}
The image of $\a$ under $f$ is $f(\a)=\imga$. \par}
\end{document}