class

Alea::XSR128

Inherits Alea::PRNG < Reference < Object

Alea::XSR128, pseudo-random number generator loaded with a state of 128 bits and therefore a period of 2^128 -1. It is as fast as Random::PCG32. If more period is needed, check out Alea::XSR256.

Constants

JUMP_32B_64 = StaticArray[2271477771_u32, 4114797267_u32, 1872770499_u32, 2012404571_u32]
JUMP_32B_96 = StaticArray[3039008046_u32, 191826335_u32, 3438649583_u32, 475530850_u32]
JUMP_64B_64 = StaticArray[3159176899437800924_u64, 689838746718161413_u64]
JUMP_64B_96 = StaticArray[3895567441539718553_u64, 11272061779601802979_u64]
STATE_STORAGE_32 = 4
STATE_STORAGE_64 = 2

Constructors

new(seed32 : UInt32, seed64 : UInt64)

Initializes the PRNG with initial seeds.

@parameters:

  • seed32: value as input to init. the state of 32-bit generators.
  • seed64: value as input to init. the state of 64-bit generators.

@references:

  • Alea::Core::Mulberry32(4)#init_state.
  • Alea::Core::SplitMix64(2)#init_state.

@exceptions:

  • Alea::UndefinedError if any of seed32 or seed64 is negative.
Source
new(seed32 : Int, seed64 : Int)

Initializes the PRNG with initial seeds.

@parameters:

  • seed32: value as input to init. the state of 32-bit generators of prng.
  • seed64: value as input to init. the state of 64-bit generators of prng.
Source
new(seed : Int)

Initializes the PRNG with initial seed.

@parameters:

  • seed: initial seed as input for generating the state of prng.
Source
new

Initializes the PRNG with initial seeds readed from system resources.

Source

Class methods

secure

Returns an instamce of this PRNG with initial seeds readed from system resources.

Source

Instance methods

jump_32(long : Bool = false) : self

Performs an advance over the 32-bit state. This is the equivalent of 2^64 calls to #next_u32.

@parameters:

  • long: flag to advance the state by 2^96 calls.
Source
jump_64(long : Bool = false) : self

Performs an advance over the 64-bit state. This is the equivalent of 2^64 calls to #next_u64.

@parameters:

  • long: flag to advance the state by 2^96 calls.
Source
next_u32

Generate a uniform-distributed random UInt32.

@examples:

rng = Alea::XSR128.new
rng.next_u32 # => 1767702788
Source
next_u64

Generate a uniform-distributed random UInt64.

@examples:

rng = Alea::XSR128.new
rng.next_u64 # => 9136120204379184874
Source