random SplitMix64 - tadashi9e/gmp4pony GitHub Wiki
Very fast Pseudo-Random-Number-Generator using only 64 bit of state, as detailed at:
http://xoshiro.di.unimi.it/ and http://gee.cs.oswego.edu/dl/papers/oopsla14.pdf
Using XorOshiro128StarStar or XorOshiro128Plus should be prefered unless using only 64 bit of state is a requirement.
class ref SplitMix64 is
Random ref- Random ref
new ref from_u64(
x: U64 val = 5489)
: SplitMix64 ref^- x: U64 val = 5489
- SplitMix64 ref^
Only x is used, y is discarded.
new ref create(
x: U64 val = 5489,
y: U64 val = 0)
: SplitMix64 ref^- SplitMix64 ref^
fun ref next()
: U64 val- U64 val
fun tag has_next()
: Bool val- Bool val
fun ref u8()
: U8 val- U8 val
fun ref u16()
: U16 val- U16 val
fun ref u32()
: U32 val- U32 val
fun ref u64()
: U64 val- U64 val
fun ref u128()
: U128 val- U128 val
fun ref ulong()
: ULong val- ULong val
fun ref usize()
: USize val- USize val
fun ref i8()
: I8 val- I8 val
fun ref i16()
: I16 val- I16 val
fun ref i32()
: I32 val- I32 val
fun ref i64()
: I64 val- I64 val
fun ref i128()
: I128 val- I128 val
fun ref ilong()
: ILong val- ILong val
fun ref isize()
: ISize val- ISize val
int_fp_mult[optional N: ((U8 val | U16 val | U32 val | U64 val | U128 val | ULong val | USize val) & Real[N] val)]
fun ref int_fp_mult[optional N: ((U8 val | U16 val | U32 val |
U64 val | U128 val | ULong val |
USize val) & Real[N] val)](
n: N)
: N- n: N
- N
int[optional N: ((U8 val | U16 val | U32 val | U64 val | U128 val | ULong val | USize val) & Real[N] val)]
fun ref int[optional N: ((U8 val | U16 val | U32 val |
U64 val | U128 val | ULong val |
USize val) & Real[N] val)](
n: N)
: N- n: N
- N
int_unbiased[optional N: ((U8 val | U16 val | U32 val | U64 val | U128 val | ULong val | USize val) & Real[N] val)]
fun ref int_unbiased[optional N: ((U8 val | U16 val | U32 val |
U64 val | U128 val | ULong val |
USize val) & Real[N] val)](
n: N)
: N- n: N
- N
fun ref real()
: F64 val- F64 val
fun ref shuffle[A: A](
array: Array[A] ref)
: None val- array: Array[A] ref
- None val