Go语言中随机数的生成


随机数在许多应用中扮演着重要的角色,从电脑游戏到密码学。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语言中生成随机数。我们学习了如何生成随机整数和浮点数、设置种子值以生成相同的随机数序列以及生成切片的随机排列。

更新于:2023年4月18日

2K+ 次浏览

启动你的职业生涯

通过完成课程获得认证

开始学习
广告