[metapost] luamplib and randomseed

Toby Thurston thurston at eml.cc
Mon Aug 2 00:56:03 CEST 2021

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`

  label.top(decimal normaldeviate, origin);
  label.bot(decimal minute, origin);

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}
  label.top(decimal normaldeviate, origin);
  label.bot(decimal minute, origin);
  \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` ?

Secondly, if I include this in an mpost program 

   randomseed := uniformdeviate infinity;

I get this useful output in the log file


showing me the randomseed value actually used (which I might want to re-use later...)

But with lualatex nothing gets written to the log when I call randomseed.
Could this be made consistent with `mpost` as well please?  

thanks and best wishes, Toby Thurston

More information about the metapost mailing list.