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+ 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告