在 TikZ 中定义变量

在 TikZ 中定义变量

我正在尝试定义随机变量 - 例如,当 r 是随机数时,绘制一些形式为 (r,r) 的随机点。我试过了\def\myrandomnumber{rnd},但每次似乎都会给我一个新的随机数。该怎么办?

答案1

\pgfmathsetseed{}以下是使用随机数确保后续运行产生相同结果的示例。我还利用 Jake 的解决方案\pgfmathsetmacro来存储结果,以便可以多次使用。

根据您运行此程序的时间,蓝色图片会有所不同(因为\pgfmathsetseed{}未使用),但红色图片不会改变。由于每个红色图像都是相同的,因此显然随机数在运行之间没有变化,但请注意,三个蓝色图片中的每一个都是不同的。

在此处输入图片描述

\documentclass{article}
\usepackage{tikz}

\newcommand*{\RandomLine}[1][red]{
\begin{tikzpicture}
    \pgfmathsetmacro{\Xa}{random(7)}
    \pgfmathsetmacro{\Ya}{random(7)}
    \pgfmathsetmacro{\Xb}{random(7)}
    \pgfmathsetmacro{\Yb}{random(7)}

    \draw [ultra thick, out=120, in=60,#1] (\Xa,\Ya) to (\Xb,\Yb);
    \draw [ultra thick, out=230, in=19,#1] (\Xa,\Ya) to (\Xb,\Yb);
    \end{tikzpicture}
}

\begin{document}
\RandomLine[blue]
\RandomLine[blue]
\RandomLine[blue]

\pgfmathsetseed{1138}\RandomLine[red]
\pgfmathsetseed{1138}\RandomLine[red]
\pgfmathsetseed{1138}\RandomLine[red]
\end{document}

答案2

您应该将运算符的结果保存rnd到宏中。最简单的方法是说\pgfmathsetmacro<\macroname>{rnd}。然后您可以在需要的地方使用随机数(例如\draw (0,0) -- (<\macroname>,<\macroname>);),并通过重复该命令来绘制一个新的\pgfmathsetmacro...

相关内容