Golang编程实现生成n个从a到b不重复随机数的方法

 更新时间:2017年01月30日 11:17:07   作者:books1958  
这篇文章主要介绍了Golang编程实现生成n个从a到b不重复随机数的方法,结合实例形式分析了Go语言字符串操作及随机数生成的相关操作技巧,需要的朋友可以参考下

本文实例讲述了Golang编程实现生成n个从a到b不重复随机数的方法。分享给大家供大家参考,具体如下:

代码很简单:

复制代码 代码如下:
package test
import (
    "fmt"
    "math/rand"
    "time"
)
//生成若干个不重复的随机数
func RandomTestBase() {
    //测试5次
    for i := 0; i < 5; i++ {
        nums := generateRandomNumber(10, 30, 10)
        fmt.Println(nums)
    }
}
//生成count个[start,end)结束的不重复的随机数
func generateRandomNumber(start int, end int, count int) []int {
    //范围检查
    if end < start || (end-start) < count {
        return nil
    }
    //存放结果的slice
    nums := make([]int, 0)
    //随机数生成器,加入时间戳保证每次生成的随机数不一样
    r := rand.New(rand.NewSource(time.Now().UnixNano()))
    for len(nums) < count {
        //生成随机数
        num := r.Intn((end - start)) + start
        //查重
        exist := false
        for _, v := range nums {
            if v == num {
                exist = true
                break
            }
        }
        if !exist {
            nums = append(nums, num)
        }
    }
    return nums
}

输出结果:

[12 20 18 19 21 28 15 13 11 10]
[28 15 12 10 20 18 16 24 27 17]
[25 28 29 19 21 12 16 13 11 15]
[27 20 19 23 18 13 21 24 12 26]
[19 10 27 18 28 12 22 14 16 26]

希望本文所述对大家Go语言程序设计有所帮助。

相关文章

  • golang接口的正确用法分享

    golang接口的正确用法分享

    这篇文章主要介绍了golang接口的正确用法分享的相关资料,需要的朋友可以参考下
    2023-09-09
  • Golang设计模式之工厂方法模式讲解和代码示例

    Golang设计模式之工厂方法模式讲解和代码示例

    工厂方法是一种创建型设计模式, 解决了在不指定具体类的情况下创建产品对象的问题,本文将通过代码示例详细给大家介绍一下Golang工厂方法模式,感兴趣的同学可以参考一下
    2023-06-06
  • golang 获取明天零点的时间戳示例

    golang 获取明天零点的时间戳示例

    今天小编就为大家分享一篇golang 获取明天零点的时间戳示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Go语言io pipe源码分析详情

    Go语言io pipe源码分析详情

    这篇文章主要介绍了Go语言io pipe源码分析详情,pipe是一个适配器,用于连接Reader和Writer,pipe的方法不多,新的写法却不少,并且结构体分两块,读写信道和结束标识,下面进入文章了解具体的内容吧
    2022-02-02
  • 解析GOROOT、GOPATH、Go-Modules-三者的关系

    解析GOROOT、GOPATH、Go-Modules-三者的关系

    这篇文章主要介绍了解析GOROOT、GOPATH、Go-Modules-三者的关系,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • golang beyla采集trace程序原理源码解析

    golang beyla采集trace程序原理源码解析

    beyla支持通过ebpf,无侵入的、自动采集应用程序的trace信息,本文以golang的nethttp为例,讲述beyla对trace的采集的实现原理,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2024-02-02
  • Golang数组的传递详解

    Golang数组的传递详解

    今天小编就为大家分享一篇关于Golang数组的传递详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • 10个可以优化代码的Go语言技巧分享

    10个可以优化代码的Go语言技巧分享

    这篇文章主要为大家详细介绍了10个可以优化代码的Go语言技巧,从而让我们的代码更加优雅,文中的示例代码讲解详细,需要的小伙伴可以参考下
    2024-01-01
  • 详解golang开发中http请求redirect的问题

    详解golang开发中http请求redirect的问题

    这篇文章主要介绍了详解golang开发中http请求redirect的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Go 字符串格式化的实例代码详解

    Go 字符串格式化的实例代码详解

    这篇文章主要介绍了Go 字符串格式化的实例代码详解,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02

最新评论