如何在Go語言中生成一組唯一的隨機數?


在許多程式設計應用中,我們需要生成一組唯一的隨機數。這對於建立唯一ID或從列表中選擇隨機項而無需重複等任務非常有用。在本文中,我們將探討如何在Go語言中生成一組唯一的隨機數。

使用math/rand包

Go語言中的math/rand包提供了一種生成隨機數的簡單方法。但是,預設情況下,math/rand包生成的隨機數並不保證唯一性。要生成一組唯一的隨機數,我們需要新增一些額外的邏輯。

示例

這是一個使用math/rand包生成一組唯一隨機數的簡單方法:

package main

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

func generateUniqueRandomNumbers(n, max int) []int {
   rand.Seed(time.Now().UnixNano())
   set := make(map[int]bool)
   var result []int
   for len(set) < n {
      value := rand.Intn(max)
      if !set[value] {
         set[value] = true
         result = append(result, value)
      }
   }
   return result
}

func main() {
    uniqueRandomNumbers := generateUniqueRandomNumbers(10, 100)
    fmt.Println(uniqueRandomNumbers)
}

輸出

[93 14 48 92 41 74 7 27 80 34]

在此程式碼中,我們定義了一個名為generateUniqueRandomNumbers的函式,它接受兩個引數n和max,其中n是我們想要生成的唯一隨機數的數量,max是隨機數的最大值。

該函式首先使用當前時間播種隨機數生成器。然後,我們建立一個集合來跟蹤我們生成的唯一值,以及一個空切片來儲存最終結果。

然後,我們進入一個迴圈,生成隨機數並將它們新增到集合中,直到集合包含n個唯一值。為了確保隨機數是唯一的,我們檢查生成的數值是否已存在於集合中。如果沒有,我們將其新增到集合中並將其新增到結果切片中。

最後,我們返回包含n個唯一隨機數的結果切片。

結論

使用math/rand包可以在Go語言中生成一組唯一的隨機數。透過新增一些額外的邏輯來檢查唯一性,我們可以為各種用例生成一組唯一的隨機數。

更新於:2023年5月5日

瀏覽量:1K+

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.