The Random
trait should be implemented by all random number generators. The only method you need to implement is fun ref next(): 64
. Once that method has been implemented, the Random
trait provides default implementations of conversions to other number types.
trait ref Random
Create with the specified seed. Returned values are deterministic for a given seed.
new ref create( x: U64 val = 5489, y: U64 val = 0) : Random ref^
If used as an iterator, this always has another value.
fun tag has_next() : Bool val
A random integer in [0, 2^64)
fun ref next() : U64 val
A random integer in [0, 2^8)
fun ref u8() : U8 val
A random integer in [0, 2^16)
fun ref u16() : U16 val
A random integer in [0, 2^32)
fun ref u32() : U32 val
A random integer in [0, 2^64)
fun ref u64() : U64 val
A random integer in [0, 2^128)
fun ref u128() : U128 val
A random integer in [0, ULong.max_value()]
fun ref ulong() : ULong val
A random integer in [0, USize.max_value()]
fun ref usize() : USize val
A random integer in [-2^7, 2^7)
fun ref i8() : I8 val
A random integer in [-2^15, 2^15)
fun ref i16() : I16 val
A random integer in [-2^31, 2^31)
fun ref i32() : I32 val
A random integer in [-2^63, 2^63)
fun ref i64() : I64 val
A random integer in [-2^127, 2^127)
fun ref i128() : I128 val
A random integer in [ILong.min_value(), ILong.max_value()]
fun ref ilong() : ILong val
A random integer in [ISize.min_value(), ISize.max_value()]
fun ref isize() : ISize val
A random integer in [0, n)
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
A random integer in [0, n)
Uses fixed-point inversion if platform supports native 128 bit operations otherwise uses floating-point multiplication.
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
A random integer in [0, n)
Not biased with small values of n
like int
.
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
A random number in [0, 1)
fun ref real() : F64 val
Shuffle the elements of the array into a random order, mutating the array.
fun ref shuffle[A: A]( array: Array[A] ref) : None val
Generates a U64 in the range [0, n)
while avoiding bias.
See: - https://arxiv.org/abs/1805.10941 - http://www.pcg-random.org/posts/bounded-rands.html
fun ref _u64_unbiased( range: U64 val) : U64 val
© 2016-2018, The Pony Developers
© 2014-2015, Causality Ltd.
Licensed under the BSD 2-Clause License.
https://stdlib.ponylang.io/random-Random