Skip to content

随机数生成

Tact 智能合约的随机数生成。

random

solidity
fun random(min: Int, max: Int): Int;

生成并返回一个新的伪随机无符号 Intx,位于提供的半闭区间内:min $≤$ x $<$ max 或者 min $≥$ x $>$ max,如果 minmax 都是负数。注意,max 值从不包含在区间内。

使用示例:

solidity
random(42, 43); // 总是 42
random(0, 42);  // 0-41,但从不包括 42

randomInt

solidity
fun randomInt(): Int;

生成并返回一个新的伪随机无符号 $256$-bit Intx

算法如下:如果 r 是作为 $32$ 字节数组的随机种子的旧值(通过构造无符号 $256$-bit Int 的大端表示),则计算其 sha512(r)。哈希的前 $32$ 字节作为随机种子的的新值 r' 存储,剩余的 $32$ 字节作为下一个随机值 x 返回。

使用示例:

solidity
let allYourRandomBelongsToUs: Int = randomInt(); // ???, 这是随机的 :)

⚠️ 高级函数用于处理随机数列在专门页面列出:高级 API