如何获取 tikzpicture 中使用的随机种子?

如何获取 tikzpicture 中使用的随机种子?

我有一张随机放置节点的图片。有时,这个图形比其他图形更好,在文档的最终版本中,我希望有一个好的数字。

我想知道如何获取图形每次渲染中使用的种子并显示它,以便我可以使用它\pgfmathsetseed{}。我知道我可以自己手动尝试一堆不同的值并最终自己设置它,但这是一个后备解决方案。

下面是一个示例代码,图中部分看起来好看或不好看取决于随机数生成器的种子。

\resizebox{88mm}{!}{
 \begin{tikzpicture}

\draw (0,0)[very thick] ellipse (1.5cm and 2.25cm);

 \foreach \x in {1,2,...,80}{
    \node (node\x) at (rand*1,rand*1.65) {$\bullet$};
 }

 \foreach \list in {
{66,    26, 63, 11, 10, 20, 61, 55},
{24,    10, 31, 8,  66, 4,  72, 1},
%...
} {
    \foreach \i in \list {
        \foreach \j in \list {
             \draw (node\i.center) -- (node\j.center);
        }
    }
 }

%...
%...

\end{tikzpicture}
}

如何才能获取随机数生成器使用的种子,而无需自己设置?

答案1

该值存储在计数器中\pgfmath@rnd@z。因此您可以读取它。

\documentclass[tikz]{standalone}
\makeatletter
\def\pgfcurrentseed{%
\pgfmathparse{\pgfmath@rnd@z}\pgfmathresult%
}
\makeatother
\begin{document}
\begin{tikzpicture}
\draw (0,0)[very thick] ellipse (1.5cm and 2.25cm);

\node (a) at (4,0) {Current seed is \pgfcurrentseed};
\foreach \x in {1,2,...,80}{
   \node (node\x) at (rand*1,rand*1.65) {$\bullet$};
}

\foreach \list in {
{66,26, 63, 11, 10, 20, 61, 55},
{24,10, 31, 8,  66, 4,  72, 1},
}{
  \foreach \i in \list {
    \foreach \j in \list {
       \draw (node\i.center) -- (node\j.center);
    }
  }
}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容