pstricks-add:为 psRandom 设置种子

pstricks-add:为 psRandom 设置种子

下图显示了使用以下方法随机散布的“点”\ps随机来自 pstricks-添加包。我需要能够为多个图形(以及及时的 gif 动画)重新生成相同的图案。此外,我还想找到一个可以生成“更好”的“点”集的种子。

我在用随机数因为我是新手普斯特里克除了能够选择种子之外,它还具有我所需要的功能。(我确实看过pstricks-添加手册(从 2004 年开始),但并未提及它作为一种可能的选择。)

有人对我如何修复此问题有什么建议吗?我想象种子设置在一个变量中,我应该能够覆盖它...

在此处输入图片描述

我愿意接受不涉及 psRandom 的替代方案。但是,我正在尝试摆脱 tikz,因此我正在寻找使用 pstricks 的解决方案。

非常感谢您的帮助。下面显示的 tex 文件将重现该图。

% summary: Figure containing random dots...
%
%          execute the following commands sequentially in order to typeset.
%          $ latex texput.tex
%          $ dvips texput.dvi
%          $ ps2pdf texput.ps

\documentclass[pstricks]{standalone}
\usepackage{pstricks-add}

\begin{document}
%
 \begin{pspicture}*(-5.5,-5.5)(7.5,5.5)
    \def\myFrame{5cm}
    \def\myWidth{8pt}
    \def\myGreen{green!80!black}
    \def\myMagenta{magenta}
    \def\myCyan{cyan!90!black}
    \def\myBlack{black!70!gray}
% Magenta dots
\psRandom[dotstyle=o, fillstyle=solid, fillcolor=\myMagenta,%
linecolor=\myGreen, randomPoints=20, dotsize=\myWidth]%
(-\myFrame,-\myFrame)%
( \myFrame, \myFrame)%
{\psframe[linecolor=black](-\myFrame,-\myFrame)(\myFrame,\myFrame)}
% Cyan dots
\psRandom[dotstyle=o,fillstyle=solid,fillcolor=\myCyan,linecolor=\myGreen,%
randomPoints=4,dotsize=\myWidth]%
(-\myFrame,-\myFrame)%
( \myFrame, \myFrame)%
{\psframe[linecolor=black](-\myFrame,-\myFrame)(\myFrame,\myFrame)}
% Black dots
\psRandom[dotstyle=o,fillstyle=solid,fillcolor=\myBlack,linecolor=\myBlack,%
randomPoints=2,dotsize=\myWidth]%
( 5,-5)%
( 7, 5)%
{\psframe[linecolor=black,linestyle=dashed]( 5, -5)( 7, 5)}
 \end{pspicture}
%
\end{document} 

答案1

该文件pstricks-add.tex通过命令初始化随机数生成器

rrand srand

在宏中\psRandom@iii

为了使结果可重现,我们需要将其更改rrand为任何常数,例如 42。

在文档的序言中放入( \usepackage{pstricks-add}

\makeatletter
\def\psRandom@iii(#1)(#2)#3{%
  \def\pst@tempA{#3}%
  \ifx\pst@tempA\pst@empty\psclip{\psframe(#2)}\else\psclip{#3}\fi
  \pst@getcoor{#1}\pst@tempA 
  \pst@getcoor{#2}\pst@tempB 
  \begin@SpecialObj
  \addto@pscode{
    \pst@tempA\space /yMin exch def 
    /xMin exch def
    \pst@tempB\space /yMax exch def 
    /xMax exch def 
    /dy yMax yMin sub def
    /dx xMax xMin sub def
    42 srand                 % initializes the random generator
    /getRandReal { rand 2147483647 div } def
    \psk@dotsize % defines /DS ... def
    \@nameuse{psds@\psk@dotstyle}
    \psk@randomPoints {
     \ifPst@color getRandReal getRandReal getRandReal setrgbcolor \fi
     getRandReal dx mul xMin add
     getRandReal dy mul yMin add
     Dot
     \ifx\psk@fillstyle\psfs@solid fill \fi stroke
    } repeat
  }%
  \end@SpecialObj
  \endpsclip
  \ignorespaces
}
\makeatother

相关内容