<div dir="ltr"><div class="gmail_default" style="font-family:monospace,monospace">a "<span style="font-family:arial,sans-serif;font-size:12.8px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">uniform sequence of natural numbers".  There are infinitely many natural numbers.  The generators you mention</span></div><div class="gmail_default" style="font-family:monospace,monospace"><span style="font-family:arial,sans-serif;font-size:12.8px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">produce integers of fixed size.  What exactly is it you want?   Do you want something like</span></div><div class="gmail_default"><span style="background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><span style="font-size:12.8px"><a href="https://gmplib.org/manual/Integer-Random-Numbers.html">https://gmplib.org/manual/Integer-Random-Numbers.html</a> ?</span><br></span></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 3 August 2018 at 00:19, Krzysztof Jurewicz <span dir="ltr"><<a href="mailto:krzysztof.jurewicz@gmail.com" target="_blank">krzysztof.jurewicz@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I’m looking for an algorithm to perform a transparent, reproducible generation of an uniform sequence of natural numbers. There are three RNG algorithms documented in the rand module:<br>
<br>
• Xoroshiro116+. According to the linked page at <a href="http://xoshiro.di.unimi.it/" rel="noreferrer" target="_blank">http://xoshiro.di.unimi.it/</a> , it is suitable only for floating point numbers, so it doesn’t fit. Moreover, the page actually describes an algorithm with 64-bit precision, while rand implements a variant with 56-bit precision. It looks like the latter is implemented only in Erlang, so there is little practical interoperability between languages.<br>
• Xorshift1024*. It fails the BigCrush test according to <a href="https://lemire.me/blog/2017/09/15/the-xorshift1024-random-number-generator-fails-bigcrush/" rel="noreferrer" target="_blank">https://lemire.me/blog/2017/<wbr>09/15/the-xorshift1024-random-<wbr>number-generator-fails-<wbr>bigcrush/</a> .<br>
• Xorshift116+. The comment about 58-bit precision being rare applies (according to <a href="https://github.com/jj1bdx/emprng/" rel="noreferrer" target="_blank">https://github.com/jj1bdx/<wbr>emprng/</a> , “the original exsplus was Xorshift128+”). Xorshift128+ fails the BigCrush test, so I presume that xorshift116+ fails it too.<br>
<br>
So… is there any particular reason for the rand module to not implement xoshiro256**, which is more widespread than 58-bit precision algorithms and, according to its creators, “has excellent (sub-ns) speed, a state space (256 bits) that is large enough for any parallel application, and it passes all tests we are aware of”?<br>
______________________________<wbr>_________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/<wbr>listinfo/erlang-questions</a><br>
</blockquote></div><br></div>