基于特定随机种子的随机图

基于特定随机种子的随机图

我想绘制一组从点 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}

相关内容