Random¶
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
Constructors¶
create¶
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^
Parameters¶
Returns¶
- Random ref^
Public Functions¶
has_next¶
If used as an iterator, this always has another value.
fun tag has_next()
: Bool val
Returns¶
- Bool val
next¶
A random integer in [0, 2^64)
fun ref next()
: U64 val
Returns¶
- U64 val
u8¶
A random integer in [0, 2^8)
fun ref u8()
: U8 val
Returns¶
- U8 val
u16¶
A random integer in [0, 2^16)
fun ref u16()
: U16 val
Returns¶
- U16 val
u32¶
A random integer in [0, 2^32)
fun ref u32()
: U32 val
Returns¶
- U32 val
u64¶
A random integer in [0, 2^64)
fun ref u64()
: U64 val
Returns¶
- U64 val
u128¶
A random integer in [0, 2^128)
fun ref u128()
: U128 val
Returns¶
- U128 val
ulong¶
A random integer in [0, ULong.max_value()]
fun ref ulong()
: ULong val
Returns¶
- ULong val
usize¶
A random integer in [0, USize.max_value()]
fun ref usize()
: USize val
Returns¶
- USize val
i8¶
A random integer in [-2^7, 2^7)
fun ref i8()
: I8 val
Returns¶
- I8 val
i16¶
A random integer in [-2^15, 2^15)
fun ref i16()
: I16 val
Returns¶
- I16 val
i32¶
A random integer in [-2^31, 2^31)
fun ref i32()
: I32 val
Returns¶
- I32 val
i64¶
A random integer in [-2^63, 2^63)
fun ref i64()
: I64 val
Returns¶
- I64 val
i128¶
A random integer in [-2^127, 2^127)
fun ref i128()
: I128 val
Returns¶
- I128 val
ilong¶
A random integer in [ILong.min_value(), ILong.max_value()]
fun ref ilong()
: ILong val
Returns¶
- ILong val
isize¶
A random integer in [ISize.min_value(), ISize.max_value()]
fun ref isize()
: ISize val
Returns¶
- ISize val
int_fp_mult[optional N: ((U8 val | U16 val | U32 val | U64 val | U128 val | ULong val | USize val) & Real[N] 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
Parameters¶
- n: N
Returns¶
- N
int[optional N: ((U8 val | U16 val | U32 val | U64 val | U128 val | ULong val | USize val) & Real[N] val)]¶
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
Parameters¶
- n: N
Returns¶
- N
int_unbiased[optional N: ((U8 val | U16 val | U32 val | U64 val | U128 val | ULong val | USize val) & Real[N] val)]¶
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
Parameters¶
- n: N
Returns¶
- N
real¶
A random number in [0, 1)
fun ref real()
: F64 val
Returns¶
- F64 val
shuffle[A: A]¶
Shuffle the elements of the array into a random order, mutating the array.
fun ref shuffle[A: A](
array: Array[A] ref)
: None val
Parameters¶
- array: Array[A] ref
Returns¶
- None val