我们如何在 Scrypto 中生成随机值?
How can we generate random values in Scrypto?
如果不允许使用浮点库,我们如何在 Scrypto 中生成随机数?我希望能够为 NFT 生成唯一 ID。
有两种方法可以解决这个问题:
- 自管理 - 如果数据结构是 Vec,我们可以使用
vec.len() + 1
作为生成的 ID,使事情变得更简单。
- 生成的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));
如果不允许使用浮点库,我们如何在 Scrypto 中生成随机数?我希望能够为 NFT 生成唯一 ID。
有两种方法可以解决这个问题:
- 自管理 - 如果数据结构是 Vec,我们可以使用
vec.len() + 1
作为生成的 ID,使事情变得更简单。 - 生成的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));