Topic: Adding xorshift* / xorshift+ PRNGs to the set of
Author: Ivo <ivo.doko@gmail.com>
Date: Thu, 2 Oct 2014 15:09:45 -0700 (PDT)
Raw View
------=_Part_428_377633482.1412287785206
Content-Type: multipart/alternative;
boundary="----=_Part_429_1071755089.1412287785206"
------=_Part_429_1071755089.1412287785206
Content-Type: text/plain; charset=UTF-8
xorshift* / xorshift+ PRNGs are presented and analysed here
<http://xorshift.di.unimi.it/> and, in more mathematical as well as
computer-scientific detail, in these two papers by Sebastiano Vigna: [1]
<http://vigna.di.unimi.it/ftp/papers/xorshift.pdf> [2]
<http://vigna.di.unimi.it/ftp/papers/xorshiftplus.pdf>. They are based on
scrambling (via multiplication/addition) the outputs of xorshift PRNGs
presented by George Marsaglia in his 2003 article Xorshift RNGs
<http://www.jstatsoft.org/v08/i14/>.
The reference implementations (in C) of the four algorithms of note are
provided by Sebastiano Vigna: xorshift64*
<http://xorshift.di.unimi.it/xorshift64star.c>, xorshift128+
<http://xorshift.di.unimi.it/xorshift128plus.c>, xorshift1024*
<http://xorshift.di.unimi.it/xorshift1024star.c>, xorshift4096*
<http://xorshift.di.unimi.it/xorshift4096star.c>.
There are multiple reasons why these should be considered for inclusion
into the STL alongside the already existing PRNGs:
- All except xorshift64* pass the BigCrush test suite from TestU01
<http://simul.iro.umontreal.ca/testu01/tu01.html>. None of the PRNG
engines currently provided in <random> do (Mersenne Twister comes
considerably closer to passing than others, but still fails).
- Despite providing a measurably higher quality of pseudo-randomness
than even Mersenne Twister, they are significantly faster than Mersenne
Twister (up to three times) while having a much lower memory footprint.
- As can be seen on pages 23 and 10 (respectively) of the two papers by
Sebastiano Vigna, the escape from the "low zero state" for these PRNGs is
considerably faster than for Mersenne Twister. Whereas Mersenne Twister
takes ~100,000 iterations to recover, xorshift4096* takes ~1000,
xorshift1024* ~100, xorshift128+ ~10 and xorshift64* recovers practically
instantly.
- Even though their period is lower than that of Mersenne Twister, the
period of xorshift1024* (which is 2^1024 - 1) is still more than enough -
for even if the generator outputs a new value each nanosecond, the time it
would take to repeat the sequence while constantly generating new values is about
4.1*10^281 times the age of the universe
<http://www.wolframalpha.com/input/?i=%282^1024+-+1%29*%281+ns%29>.
I have included my own implementation of these PRNGs as typedefs of a
generalized class conforming with the standard PRNGs from <random> (i.e.
these can be passed to distributions from <random> etc.). For convenience,
I have also included a main.cpp which compares the outputs of my
implementation with the outputs of the reference implementations by
Sebastiano Vigna and demonstrates using a binomial_distribution with
xorshift1024*. I have also provided these source codes here
<https://sourceforge.net/projects/xorshift-cpp/files/>. Since Sebastiano
Vigna has dedicated the reference implementations to the public domain, I
have done the same.
I am interested to hear if other people think this would be a worthwhile
addition to the STL.
--
---
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-proposals/.
------=_Part_429_1071755089.1412287785206
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">xorshift* / xorshift+ PRNGs are presented and analysed <a =
href=3D"http://xorshift.di.unimi.it/">here</a> and, in more mathematical as=
well as computer-scientific detail, in these two papers by Sebastiano Vign=
a: <a href=3D"http://vigna.di.unimi.it/ftp/papers/xorshift.pdf">[1]</a> <a =
href=3D"http://vigna.di.unimi.it/ftp/papers/xorshiftplus.pdf">[2]</a>. They=
are based on scrambling (via multiplication/addition) the outputs of xorsh=
ift PRNGs presented by George Marsaglia in his 2003 article <a href=3D"http=
://www.jstatsoft.org/v08/i14/">Xorshift RNGs</a>.<br><br>The reference impl=
ementations (in C) of the four algorithms of note are provided by Sebastian=
o Vigna: <a href=3D"http://xorshift.di.unimi.it/xorshift64star.c">xorshift6=
4*</a>, <a href=3D"http://xorshift.di.unimi.it/xorshift128plus.c">xorshift1=
28+</a>, <a href=3D"http://xorshift.di.unimi.it/xorshift1024star.c">xorshif=
t1024*</a>, <a href=3D"http://xorshift.di.unimi.it/xorshift4096star.c">xors=
hift4096*</a>.<br><br>There are multiple reasons why these should be consid=
ered for inclusion into the STL alongside the already existing PRNGs:<br><u=
l><li>All except xorshift64* pass the BigCrush test suite from <a href=3D"h=
ttp://simul.iro.umontreal.ca/testu01/tu01.html">TestU01</a>. None of the PR=
NG engines currently provided in <random> do (Mersenne Twister comes =
considerably closer to passing than others, but still fails).</li><li>Despi=
te providing a measurably higher quality of pseudo-randomness than even Mer=
senne Twister, they are significantly faster than Mersenne Twister (up to t=
hree times) while having a much lower memory footprint.</li><li>As can be s=
een on pages 23 and 10 (respectively) of the two papers by Sebastiano Vigna=
, the escape from the "low zero state" for these PRNGs is considerably fast=
er than for Mersenne Twister. Whereas Mersenne Twister takes ~100,000 itera=
tions to recover, xorshift4096* takes ~1000, xorshift1024* ~100, xorshift12=
8+ ~10 and xorshift64* recovers practically instantly.</li><li>Even though =
their period is lower than that of Mersenne Twister, the period of xorshift=
1024* (which is 2^1024 - 1) is still more than enough - for even if the gen=
erator outputs a new value each nanosecond, the time it would take to repea=
t the sequence while constantly generating new values is <a href=3D"http://=
www.wolframalpha.com/input/?i=3D%282^1024+-+1%29*%281+ns%29">about 4.1*10^2=
81 times the age of the universe</a>.</li></ul>I have included my own imple=
mentation of these PRNGs as typedefs of a generalized class conforming with=
the standard PRNGs from <span style=3D"font-family: courier new,monospace;=
"><random></span> (i.e. these can be passed to distributions from <sp=
an style=3D"font-family: courier new,monospace;"><random></span> etc.=
). For convenience, I have also included a <span style=3D"font-family: cour=
ier new,monospace;">main.cpp</span> which compares the outputs of my implem=
entation with the outputs of the reference implementations by Sebastiano Vi=
gna and demonstrates using a <span style=3D"font-family: courier new,monosp=
ace;">binomial_distribution</span> with xorshift1024*. I have also provided=
these source codes <a href=3D"https://sourceforge.net/projects/xorshift-cp=
p/files/">here</a>. Since Sebastiano Vigna has dedicated the reference impl=
ementations to the public domain, I have done the same.<br><br>I am interes=
ted to hear if other people think this would be a worthwhile addition to th=
e STL.<br></div>
<p></p>
-- <br />
<br />
--- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
Visit this group at <a href=3D"http://groups.google.com/a/isocpp.org/group/=
std-proposals/">http://groups.google.com/a/isocpp.org/group/std-proposals/<=
/a>.<br />
------=_Part_429_1071755089.1412287785206--
------=_Part_428_377633482.1412287785206
Content-Type: application/zip; name=xorshift.zip
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=xorshift.zip
X-Attachment-Id: acbeba9a-17bf-405a-b860-95343660d60f
Content-ID: <acbeba9a-17bf-405a-b860-95343660d60f>
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
------=_Part_428_377633482.1412287785206--
.
Author: Ivo <ivo.doko@gmail.com>
Date: Fri, 3 Oct 2014 11:51:27 -0700 (PDT)
Raw View
------=_Part_809_1817714448.1412362287386
Content-Type: text/plain; charset=UTF-8
I have discovered a mistake in a comment in the file xorshift.h (in the
implementation I have provided). Instead of
* @tparam n The state size (== n * 8 bytes).
It should be
* @tparam n The state size (== n * sizeof(UIntType) bytes).
Since all the reference generators use only 64-bit unsigned integers, I
have mistakenly generalised.
--
---
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-proposals/.
------=_Part_809_1817714448.1412362287386
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">I have discovered a mistake in a comment in the file xorsh=
ift.h (in the implementation I have provided). Instead of<br><br><div class=
=3D"prettyprint" style=3D"background-color: rgb(250, 250, 250); border-colo=
r: rgb(187, 187, 187); border-style: solid; border-width: 1px; word-wrap: b=
reak-word;"><code class=3D"prettyprint"><div class=3D"subprettyprint"><span=
style=3D"color: #660;" class=3D"styled-by-prettify">*</span><span style=3D=
"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #=
066;" class=3D"styled-by-prettify">@tparam</span><span style=3D"color: #000=
;" class=3D"styled-by-prettify"> n </span><span style=3D"color: #606;=
" class=3D"styled-by-prettify">The</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"> state size </span><span style=3D"color: #660;" cla=
ss=3D"styled-by-prettify">(=3D=3D</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"> n </span><span style=3D"color: #660;" class=3D"sty=
led-by-prettify">*</span><span style=3D"color: #000;" class=3D"styled-by-pr=
ettify"> </span><span style=3D"color: #066;" class=3D"styled-by-prettify">8=
</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> bytes</sp=
an><span style=3D"color: #660;" class=3D"styled-by-prettify">).</span></div=
></code></div><br>It should be<br><br><div class=3D"prettyprint" style=3D"b=
ackground-color: rgb(250, 250, 250); border-color: rgb(187, 187, 187); bord=
er-style: solid; border-width: 1px; word-wrap: break-word;"><code class=3D"=
prettyprint"><div class=3D"subprettyprint"><span style=3D"color: #660;" cla=
ss=3D"styled-by-prettify">*</span><span style=3D"color: #000;" class=3D"sty=
led-by-prettify"> </span><span style=3D"color: #066;" class=3D"styled-by-pr=
ettify">@tparam</span><span style=3D"color: #000;" class=3D"styled-by-prett=
ify"> n </span><span style=3D"color: #606;" class=3D"styled-by-pretti=
fy">The</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> st=
ate size </span><span style=3D"color: #660;" class=3D"styled-by-prettify">(=
=3D=3D</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> n <=
/span><span style=3D"color: #660;" class=3D"styled-by-prettify">*</span><sp=
an style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=
=3D"color: #008;" class=3D"styled-by-prettify">sizeof</span><span style=3D"=
color: #660;" class=3D"styled-by-prettify">(</span><span style=3D"color: #6=
06;" class=3D"styled-by-prettify">UIntType</span><span style=3D"color: #660=
;" class=3D"styled-by-prettify">)</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"> bytes</span><span style=3D"color: #660;" class=3D"=
styled-by-prettify">).</span></div></code></div><br>Since all the reference=
generators use only 64-bit unsigned integers, I have mistakenly generalise=
d.<br></div>
<p></p>
-- <br />
<br />
--- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
Visit this group at <a href=3D"http://groups.google.com/a/isocpp.org/group/=
std-proposals/">http://groups.google.com/a/isocpp.org/group/std-proposals/<=
/a>.<br />
------=_Part_809_1817714448.1412362287386--
.