rand

std.rand

rec Rng

pub rec Rng;

fun init

pub fun init() Rng;

从内核熵池中设定种子来创建一个 Rng

返回值:带有密码学种子的已初始化 Rng

fun seed

pub fun seed(s0: u64, s1: u64, s2: u64, s3: u64) Rng;

使用明确的种子值创建一个 Rng

至少有一个值必须为非零。

s0:第一个状态字 s1:第二个状态字 s2:第三个状态字 s3:第四个状态字 返回值:已初始化的 Rng

fun next

pub fun next(r: *Rng) u64;

生成下一个随机 u64 并推进状态

r:指向 Rng 状态的指针 返回值:伪随机 64 位值

fun next_u32

pub fun next_u32(r: *Rng) u32;

生成下一个随机 u32 并推进状态

r:指向 Rng 状态的指针 返回值:伪随机 32 位值

fun range

pub fun range(r: *Rng, lo: i64, hi: i64) i64;

在范围 [lo, hi) 内生成一个随机值

hi 必须大于 lo;否则返回 lo

r:指向 Rng 状态的指针 lo:包含的下界(inclusive lower bound) hi:不包含的上界(exclusive upper bound) 返回值:[lo, hi) 内的伪随机值

fun range_u64

pub fun range_u64(r: *Rng, lo: u64, hi: u64) u64;

在无符号范围 [lo, hi) 内生成一个随机值

hi 必须大于 lo;否则返回 lo

r:指向 Rng 状态的指针 lo:包含的下界 hi:不包含的上界 返回值:[lo, hi) 内的伪随机值

fun shuffle

pub fun shuffle[T](r: *Rng, data: *T, len: usize);

使用 Fisher-Yates 算法就地洗牌数组

r:指向 Rng 状态的指针 data:指向数组的指针 len:元素数量