我们如何在 Scrypto 中生成随机值?

How can we generate random values in Scrypto?

如果不允许使用浮点库,我们如何在 Scrypto 中生成随机数?我希望能够为 NFT 生成唯一 ID。

有两种方法可以解决这个问题:

  1. 自管理 - 如果数据结构是 Vec,我们可以使用 vec.len() + 1 作为生成的 ID,使事情变得更简单。
  2. 生成的Uuid - Scrypto提供Runtime::generate_uuid这是Uuid中生成的数字格式,应该保证唯一性

我们还可以生成给定最大范围的值:

fn get_random(end: usize) -> usize {
    let num = Runtime::generate_uuid();
    (num % end as u128) as usize
}

// prints number between 0 - 5
info!("{}", get_random(5));