[metapost] luamplib and randomseed
Dohyun Kim
nomosnomos at gmail.com
Mon Aug 2 13:44:51 CEST 2021
2021년 8월 2일 (월) 오전 7:56, Toby Thurston <thurston at eml.cc>님이 작성:
>
> There appear to be a couple of small problems with the implementation of `randomseed` in luamplib.
>
> First one is that the default value appears only to change every minute.
>
> If I run this program through `mpost`
>
> prologues:=3;outputtemplate:="rs.eps";
> beginfig(1);
> label.top(decimal normaldeviate, origin);
> label.bot(decimal minute, origin);
> endfig;
> end
>
> Then I get a different value for the random number every time, and the minute
> value changes every minute (as expected).
>
> But if I run the same program through lualatex — LuaHBTeX, 1.13.0 (TL 2021)
>
> \documentclass{standalone} \usepackage{luamplib} \begin{document} \begin{mplibcode}
> beginfig(1);
> label.top(decimal normaldeviate, origin);
> label.bot(decimal minute, origin);
> endfig;
> \end{mplibcode} \end{document}
>
> then the random number only changes when the minute changes....
>
> Apparently the luamplib version is using the old default randomseed of day + minute of day despite
> the fact that the relevant bit of mp.w says this:
>
> The global variable |random_seed| was introduced in version 0.9,
> for the sole reason of stressing the fact that the initial value of the
> random seed is system-dependant. The initialization code below will initialize
> this variable to |(internal[mp_time] div unity)+internal[mp_day]|, but this
> is not good enough on modern fast machines that are capable of running
> multiple MetaPost processes within the same second.
>
> Could we have the default seed to set to something that is "good enough"? Or at least something
> that is consistent with `mpost` ?
>
Next version of luamplib will feed random integer values to the
random_seed key of every new mplib instance.
For the time being, you can do it by yourself by declaring as follows:
randomseed := runscript"mp.print(math.random(4095))";
Best,
--
Dohyun Kim
Seoul, Republic of Korea
More information about the metapost
mailing list.