Golang 生成随机数
随机数在许多应用程序中起到重要作用,从计算机游戏到密码学。Go语言内置了一个名为”math/rand”的包,它提供了一套用于生成随机数的函数。在本文中,我们将探讨如何使用”math/rand”包在Go中生成随机数。
生成一个随机整数
要生成一个随机整数,我们可以使用”math/rand”包中的”Intn()”函数。”Intn()”函数以一个整数n作为参数,并返回一个介于0和n-1之间的随机整数。
示例
package main
import (
"fmt"
"math/rand"
)
func main() {
// Generating a random integer between 0 and 99
randomInt := rand.Intn(100)
fmt.Println(randomInt)
}
输出
81
生成一个随机浮点数
要生成一个随机浮点数,我们可以使用”math/rand”包中的”Float64()”函数。”Float64()”函数返回一个在0.0到1.0之间的随机浮点数。
示例
package main
import (
"fmt"
"math/rand"
)
func main() {
// Generating a random float between 0.0 and 1.0
randomFloat := rand.Float64()
fmt.Println(randomFloat)
}
输出
0.6046602879796196
设置种子值
为了在每次运行程序时生成相同的随机数序列,我们可以使用”math/rand”包中的”Seed()”函数来设置种子值。”Seed()”函数以整数作为参数,并初始化随机数生成器。
示例
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
// Setting a seed value to generate a different sequence of random numbers each time
rand.Seed(time.Now().UnixNano())
// Generating a random integer between 0 and 99
randomInt := rand.Intn(100)
fmt.Println(randomInt)
// Generating a random float between 0.0 and 1.0
randomFloat := rand.Float64()
fmt.Println(randomFloat)
}
输出
56
0.295370367780173
生成随机排列
要生成一个切片的随机排列,我们可以使用”math/rand”包中的”Perm()”函数。”Perm()”函数以一个整数n作为参数,并返回整数[0, n)的随机排列。
示例
package main
import (
"fmt"
"math/rand"
)
func main() {
// Generating a random permutation of integers [0, 5)
perm := rand.Perm(5)
fmt.Println(perm)
}
输出
[0 4 2 3 1]
结论
在本文中,我们探索了如何使用 “math/rand” 包在Go中生成随机数。我们学习了如何生成随机整数和浮点数,设置种子值生成相同序列的随机数,并生成切片的随机排列。