我想绘制一组从点 A 到点 B 的随机函数 f(x),每个函数都有一个固定的随机种子。换句话说,我希望每次创建文档时,这些函数看起来都一样,这取决于它们关联的随机种子。
到目前为止,我有这个:
\documentclass[tikz]{standalone}
% Random path from A=(0,0) to B=(1,1) with seed #1 and color #2
\newcommand\randompath[2]{%
\pgfextra{\pgfmathsetseed{#1}}%
\addplot[#2,domain=0:1,samples=5,smooth] { x+rand*(x)*(1-x)};%
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xmin=0,xmax=1,ymin=0,ymax=1]
\randompath{1}{red} % 1st function
\randompath{1}{blue} % 2nd function
\randompath{1}{green} % 3rd function
\end{axis}
\end{tikzpicture}
\end{document}
然而,这三个函数并不完全相同,并且在重新创建时会改变其形状。因此,它\pgfmathsetseed
似乎没有按预期工作?
如何实现对于选定的种子数,绘制的\randompath
函数看起来总是相同的?
答案1
放入的所有内容都在环境\pgfextra
末尾的一个单独组中执行axis
(在所有图都计算完毕之后)。删除\pgfextra
,您将获得三个相同的图。
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
% Random path from A=(0,0) to B=(1,1) with seed #1 and color #2
\newcommand\randompath[2]{%
\pgfmathsetseed{#1}%
\addplot[#2,domain=0:1,samples=5,smooth] { x+rand*(x)*(1-x)};%
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xmin=0,xmax=1,ymin=0,ymax=1]
\randompath{1}{red, line width=8pt} % 1st function
\randompath{1}{blue, line width=4pt} % 2nd function
\randompath{1}{green, line width=1pt} % 3rd function
\end{axis}
\end{tikzpicture}
\end{document}