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

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

在Golang中生成唯一随机数数组有许多方法,但是如何保证数组中的数字不会重复呢?本篇文章将为大家介绍一种可行的方法,即使用math/rand包和time包来生成随机数数组。

步骤一:导入包

首先,需导入math/rand和time两个包。math/rand包提供了生成随机数的函数,而time包提供了种子,确保每次生成的随机数都是不同的。

import (
    "math/rand"
    "time"
)

步骤二:设置种子

接下来,我们需要设置一个种子。在上一步中,我们提到了time包提供了种子。我们可以使用time.Now().UnixNano()函数来获取当前时间的纳秒级别时间戳作为种子,确保每次生成的随机数都不同。

rand.Seed(time.Now().UnixNano())

步骤三:生成唯一随机数数组

现在,我们已经设置好了种子。接下来,我们可以使用rand.Perm(n int)函数来生成一个长度为n的唯一随机数数组。这个函数将返回一个长度为n的整数切片,其中的数字是[0, n)之间的整数,且不存在重复数字。

下面是一个生成长度为10的唯一随机数数组的示例代码:

uniqueArray := rand.Perm(10)
fmt.Println(uniqueArray)

输出结果可能是:

[1 4 6 2 3 8 5 7 9 0]

步骤四:使用唯一随机数数组

现在,我们已经成功地生成了一个长度为n的唯一随机数数组。我们可以使用它来做很多有趣的事情,比如随机打乱一个数组:

array := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
rand.Shuffle(len(array), func(i, j int) {
    array[i], array[j] = array[j], array[i]
})
fmt.Println(array)

输出结果可能是:

[5 9 4 10 6 8 3 1 7 2]

完整代码

下面是生成唯一随机数数组的完整代码:

package main

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

func main() {
    rand.Seed(time.Now().UnixNano())
    uniqueArray := rand.Perm(10)
    fmt.Println(uniqueArray)

    array := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
    rand.Shuffle(len(array), func(i, j int) {
        array[i], array[j] = array[j], array[i]
    })
    fmt.Println(array)
}

结论

生成唯一随机数数组在Golang中有很多种方法,但使用math/rand包和time包是其中一种可行的方法。我们可以使用rand.Perm(n int)函数生成一个长度为n的唯一随机数数组,并使用它来做很多有趣的事情,比如随机打乱一个数组。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程