From c4408318c97be75915b3dff23a933bbc4b5c2046 Mon Sep 17 00:00:00 2001 From: Raimo Niskanen Date: Thu, 10 May 2018 01:13:03 +0200 Subject: Implement Xoroshiro928** --- lib/stdlib/doc/src/rand.xml | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) (limited to 'lib/stdlib/doc') diff --git a/lib/stdlib/doc/src/rand.xml b/lib/stdlib/doc/src/rand.xml index 21f680a0ee..5f1ec84786 100644 --- a/lib/stdlib/doc/src/rand.xml +++ b/lib/stdlib/doc/src/rand.xml @@ -67,6 +67,26 @@

Xorshift1024*, 64 bits precision and a period of 2^1024-1

Jump function: equivalent to 2^512 calls

+ exro928ss + +

Xoroshiro928**, 58 bits precision and a period of 2^928-1

+

Jump function: equivalent to 2^512 calls

+

+ This is a 58 bit version of Xoroshiro1024**, + from the 2018 paper by David Blackman and Sebastiano Vigna: + + Scrambled Linear Pseudorandom Number Generators + + that on a 64 bit Erlang system executes only about 30% slower than + the default exrop algorithm but with much longer period + and better statistical properties, and on the flip side + a larger state. +

+

+ Many thanks to Sebastiano Vigna for his help with + the 58 bit adaption. +

+
exsp

Xorshift116+, 58 bits precision and period of 2^116-1

@@ -195,8 +215,8 @@ SND0 = math:sqrt(-2 * math:log(R5)) * math:cos(math:pi() * R6)

- For all these generators the lowest bit(s) has got - a slightly less random behaviour than all other bits. + For all these generators except exro928ss the lowest bit(s) + has got a slightly less random behaviour than all other bits. 1 bit for exrop (and exsp), and 3 bits for exs1024s. See for example the explanation in the @@ -254,19 +274,23 @@ tests. We suggest to use a sign test to extract a random Boolean value. - +

Algorithm specific internal state

- +

Algorithm specific internal state

- +

Algorithm specific internal state

- + +

Algorithm specific internal state

+
+ +

Algorithm specific internal state

-- cgit v1.2.3