重复相同的随机数

重复相同的随机数

回答这个问题:在 tikz 中绘制插图,我想画一个不相交具有随机修改半径的逐步(超)椭圆。我最终使用了以下基本方法:

\documentclass[tikz, border=1cm]{standalone}
\begin{document}
\begin{tikzpicture}
\draw[cyan, very thick] (2.5,0) \foreach \ang in {5,10,...,355}{ -- ({(2+rnd)*cos(\ang)}, {0.5*(2+rnd)*sin(\ang)})} -- cycle;
\end{tikzpicture}
\end{document}

随机锯齿状闭环

问题在于椭圆的半径被两个不同的随机数修改,而形状确实如所见自相交。我的目标是让 x 半径随机,(2+rnd)y 半径为其比例0.5*(2+rnd)(但使用相同的随机数)。

我在想,我可以使用\pgfmathparse,但在里面不允许这样做\draw

我该如何解决这个问题?

编辑:我刚刚从功能上解决了我的问题。我不知道是否可以用更聪明的方式来解决。

答案1

就在我发布问题的时候,我想起来了\pgfextra,解决方案很简单:

\documentclass[tikz, border=1cm]{standalone}
\begin{document}
\begin{tikzpicture}
\draw[cyan, very thick] (2.5,0) \foreach \ang in {5,10,...,355}{ \pgfextra{\pgfmathsetmacro{\r}{(2+rnd)}} -- ({(\r*cos(\ang)}, {0.5*\r*sin(\ang)})} -- cycle;
\end{tikzpicture}
\end{document}

锯齿状椭圆

-但我还是不知道该rnd号码是否可以直接重复使用!?

编辑:现在没有额外的宏。

\documentclass[tikz, border=1cm]{standalone}
\begin{document}
\begin{tikzpicture}
\draw[cyan, very thick] (2.5,0) \foreach \ang in {5,10,...,355}{ \pgfextra{\pgfmathrnd} -- ({(2+\pgfmathresult)*cos(\ang)}, {0.5*(2+\pgfmathresult)*sin(\ang)})} -- cycle;
\end{tikzpicture}
\end{document}

相关内容