我有一张随机放置节点的图片。有时,这个图形比其他图形更好,在文档的最终版本中,我希望有一个好的数字。
我想知道如何获取图形每次渲染中使用的种子并显示它,以便我可以使用它\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}