class Alea::XSR256
- Alea::XSR256
- Reference
- Object
Overview
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
.
Included Modules
Defined in:
Constant Summary
-
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.
-
.new(seed32 : Int, seed64 : Int)
Initializes the PRNG with initial seeds.
-
.new(seed : Int)
Initializes the PRNG with initial seed.
-
.new
Initializes the PRNG with initial seeds readed from system resources.
Class Method Summary
-
.secure
Returns an instamce of this PRNG with initial seeds readed from system resources.
Instance Method Summary
-
#jump_32(long : Bool = false) : self
Performs an advance over the 32-bit state.
-
#jump_64(long : Bool = false) : self
Performs an advance over the 32-bit state.
-
#next_u32 : UInt32
Generate a uniform-distributed random
UInt32
. -
#next_u64 : UInt64
Generate a uniform-distributed random
UInt64
.
Instance methods inherited from module Alea::PRNG(UInt64, UInt64)
next_f32 : Float32
next_f32,
next_f64 : Float64
next_f64,
next_i32 : Int32
next_i32,
next_i64 : Int64
next_i64,
next_u32 : UInt32
next_u32,
next_u64 : UInt64
next_u64
Constructor methods inherited from module Alea::PRNG(UInt64, UInt64)
new(seed32 : S32, seed64 : S64)
new
Constructor Detail
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 ofseed32
orseed64
is negative.
Initializes the PRNG with initial seeds.
@parameters:
seed32
: value as input to init. the state of 32-bit generators ofprng
.seed64
: value as input to init. the state of 64-bit generators ofprng
.
Initializes the PRNG with initial seed.
@parameters:
seed
: initial seed as input for generating the state ofprng
.
Class Method Detail
Instance Method Detail
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 by2^192
calls.
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 by2^192
calls.
Generate a uniform-distributed random UInt32
.
@examples:
rng = Alea::XSR128.new
rng.next_u32 # => 1767702788
Generate a uniform-distributed random UInt64
.
@examples:
rng = Alea::XSR256.new
rng.next_u # => 9136120204379184874