如何在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語言中生成一組唯一的隨機數。透過新增一些額外的邏輯來檢查唯一性,我們可以為各種用例生成一組唯一的隨機數。
廣告
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP