我正在尝试定义随机变量 - 例如,当 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...
。