在 Golang 中生成随机数

go programmingserver side programmingprogramming更新于 2025/5/27 16:52:17

随机数在许多应用中都发挥着重要作用,从计算机游戏到密码学。Go 有一个名为"math/rand"的内置包,它提供了一套生成随机数的函数。在本文中,我们将探讨如何使用"math/rand"包在 Go 中生成随机数。

生成随机整数

要生成随机整数,我们可以使用"math/rand"包中的"Intn()"函数。 "Intn()"函数以整数 n 作为参数,并返回 0 到 n-1 之间的随机整数。

示例

package main

import (
    "fmt"
    "math/rand"
)

func main() {
    // 生成 0 到 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() {
    // 生成 0.0 到 1.0 之间的随机浮点数
    randomFloat := rand.Float64()
    fmt.Println(randomFloat)
}

输出

0.6046602879796196

设置种子值

为了在每次运行程序时生成相同的随机数序列,我们可以使用"math/rand"包中的"Seed()"函数设置种子值。"Seed()"函数以整数作为参数并初始化随机数生成器。

示例

package main

import (
   "fmt"
   "math/rand"
   "time"
)

func main() {
    // 设置种子值,每次生成不同的随机数序列
    rand.Seed(time.Now().UnixNano())
    
    // 生成 0 到 99 之间的随机整数
    randomInt := rand.Intn(100)
    fmt.Println(randomInt)
    
    // 生成 0.0 到 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() {
    // 生成整数的随机排列 [0, 5)
    perm := rand.Perm(5)
    fmt.Println(perm)
}

输出

[0 4 2 3 1]

结论

在本文中,我们探索了如何使用"math/rand"包在 Go 中生成随机数。我们学习了如何生成随机整数和浮点数,如何设置种子值以生成相同的随机数序列,以及如何生成切片的随机排列。


相关文章