如何在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