# Random

[Source]

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

[Source]

Create with the specified seed. Returned values are deterministic for a given seed.

``````new ref create(
x: U64 val = seq,
y: U64 val = seq)
: Random ref^
``````

#### Parameters

• x: U64 val = seq
• y: U64 val = seq

## Public Functions

### has_next

[Source]

If used as an iterator, this always has another value.

``````fun tag has_next()
: Bool val
``````

### next

[Source]

A random integer in [0, 2^64)

``````fun ref next()
: U64 val
``````

### u8

[Source]

A random integer in [0, 2^8)

``````fun ref u8()
: U8 val
``````

### u16

[Source]

A random integer in [0, 2^16)

``````fun ref u16()
: U16 val
``````

### u32

[Source]

A random integer in [0, 2^32)

``````fun ref u32()
: U32 val
``````

### u64

[Source]

A random integer in [0, 2^64)

``````fun ref u64()
: U64 val
``````

### u128

[Source]

A random integer in [0, 2^128)

``````fun ref u128()
: U128 val
``````

### ulong

[Source]

A random integer in [0, ULong.max_value()]

``````fun ref ulong()
: ULong val
``````

### usize

[Source]

A random integer in [0, USize.max_value()]

``````fun ref usize()
: USize val
``````

### i8

[Source]

A random integer in [-2^7, 2^7)

``````fun ref i8()
: I8 val
``````

### i16

[Source]

A random integer in [-2^15, 2^15)

``````fun ref i16()
: I16 val
``````

### i32

[Source]

A random integer in [-2^31, 2^31)

``````fun ref i32()
: I32 val
``````

### i64

[Source]

A random integer in [-2^63, 2^63)

``````fun ref i64()
: I64 val
``````

### i128

[Source]

A random integer in [-2^127, 2^127)

``````fun ref i128()
: I128 val
``````

### ilong

[Source]

A random integer in [ILong.minvalue(), ILong.maxvalue()]

``````fun ref ilong()
: ILong val
``````

### isize

[Source]

A random integer in [ISize.minvalue(), ISize.maxvalue()]

``````fun ref isize()
: ISize val
``````

### int[optional N: ((U8 val | U16 val | U32 val | U64 val | U128 val | ULong val | USize val) & Real[N] val)]

[Source]

A random integer in [0, n)

``````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

### real

[Source]

A random number in [0, 1)

``````fun ref real()
: F64 val
``````

### shuffle[A: A]

[Source]

Shuffle the elements of the array into a random order, mutating the array.

``````fun ref shuffle[A: A](
array: Array[A] ref)
: None val
``````