Golang 如何生成一组唯一的随机数

Golang 如何生成一组唯一的随机数

在许多编程应用中,我们需要生成一组唯一的随机数数组。这对于创建唯一的ID或从列表中选择随机项而不重复可以非常有用。在本文中,我们将探讨如何在Golang中生成一组唯一的随机数数组。

使用math/rand包

Golang的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是随机数的最大值。

该函数首先使用当前时间对随机数生成器进行种子初始化。然后我们创建一个set来跟踪我们生成的唯一值,并创建一个空slice来保存最终的结果。

然后我们进入一个循环,生成随机数并将其添加到set中,直到set包含n个唯一值为止。为了确保随机数的唯一性,我们检查生成的值是否已经在set中。如果不在,则将其添加到set中并附加到结果slice中。

最后,我们返回包含n个唯一随机数的结果slice。

结论

在Golang中生成一个数组的唯一随机数可以使用math/rand包来实现。通过添加一些额外的逻辑来检查唯一性,我们可以为各种用例生成一个数组的唯一随机数。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程