Golang 如何获取Int31n类型的随机数
Go语言通过math/rand包提供内置支持,用于生成指定类型的随机数。此包实现了伪随机数生成器。这些随机数由一个源产生,并且每次运行程序时该源会产生确定性值序列。如果您需要随机数用于安全敏感的工作,请使用crypto/rand包。
您可以使用math/rand包中提供的Int31n()函数从默认源生成31位整数n的int32型的非负伪随机数[0,n)。因此,您需要使用import关键字将math/rand包添加到您的程序中,以访问Int31()函数。如果n的值为<= 0,此方法将引发panic。
语法:
func Int31n(n int32) int32
让我们通过以下示例讨论这个概念:
示例1:
// Golang程序,演示
// 如何获取随机数
package main
import (
"fmt"
"math/rand"
)
// 主函数
func main() {
// 使用Int31n()函数查找int31n类型的随机数
res_1 := rand.Int31n(2)
res_2 := rand.Int31n(4)
res_3 := rand.Int31n(1)
// 显示结果
fmt.Println("随机数1:", res_1)
fmt.Println("随机数2:", res_2)
fmt.Println("随机数3:", res_3)
}
输出:
随机数1:1
随机数2:3
随机数3:0
示例2:
// Golang程序,演示
// 如何获取随机数
package main
import (
"fmt"
"math/rand"
)
// 主函数
func main() {
// 如果此函数的值为0或小于零,则将引发panic
res_1 := rand.Int31n(0)
res_2 := rand.Int31n(-1)
// 显示结果
fmt.Println("随机数1:", res_1)
fmt.Println("随机数2:", res_2)
}
输出:
panic: invalid argument to Int31n
goroutine 1 [running]:
math/rand.(*Rand).Int31n(0x43e280, 0x0, 0x43e280, 0x460000)
/usr/local/go/src/math/rand/rand.go:128 +0x180
math/rand.Int31n(…)
/usr/local/go/src/math/rand/rand.go:324
main.main()
/tmp/sandbox269134149/prog.go:16 +0x40
极客教程