class

Alea::XSR256

Inherits Alea::PRNG < Reference < Object

Alea::XSR256, pseudo-random number generator loaded with 256 bits of state and therefore a period of 2^256 -1. It is slower (2x) than Alea::XSR128. If more period is needed, check out Alea::MT19937.

Constants

JUMP_64B_128 = StaticArray[1733541517147835066_u64, 15395012609548302636_u64, 12202545078643706282_u64, 4155657270789760540_u64]
JUMP_64B_192 = StaticArray[8566230491382795199_u64, 14195432079911694259_u64, 8606660816089834049_u64, 4111957640723818037_u64]
STATE_STORAGE_64 = 4

Constructors

new(seed32 : UInt64, 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.

@note: both 32-bit and 64-bit states are internally processed as arrays of UInt64, and so is the type of seeds.

@references:

  • Alea::Core::SplitMix64(4)#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^128 calls to #next_u32.

@parameters:

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

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

@parameters:

  • long: flag to advance the state by 2^192 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::XSR256.new
rng.next_u # => 9136120204379184874
Source