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语言程序设计有所帮助。

相关文章

  • Go语言中的复合类型详细介绍

    Go语言中的复合类型详细介绍

    这篇文章主要介绍了Go语言中的复合类型详细介绍,复合类型包括:结构体、数组、切片、Maps,需要的朋友可以参考下
    2014-10-10
  • 代码整洁利器go fmt命令使用详解

    代码整洁利器go fmt命令使用详解

    这篇文章主要为大家介绍了代码整洁利器go fmt命令使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • golang映射Map的方法步骤

    golang映射Map的方法步骤

    这篇文章主要介绍了golang映射Map的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 在Go中创建随机的安全密码

    在Go中创建随机的安全密码

    今天小编就为大家分享一篇关于在Go中创建随机的安全密码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • golang 占位符和fmt常见输出介绍

    golang 占位符和fmt常见输出介绍

    这篇文章主要介绍了golang 占位符和fmt常见输出介绍,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • golang 字符串拼接性能的对比分析

    golang 字符串拼接性能的对比分析

    这篇文章主要介绍了golang 字符串拼接性能的对比分析,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Golang开发命令行之flag包的使用方法

    Golang开发命令行之flag包的使用方法

    这篇文章主要介绍Golang开发命令行及flag包的使用方法,日常命令行操作,相对应的众多命令行工具是提高生产力的必备工具,本文围绕该内容展开话题,需要的朋友可以参考一下
    2021-10-10
  • Golang实现Mongo数据库增删改查操作

    Golang实现Mongo数据库增删改查操作

    本文主要介绍了Golang实现Mongo数据库增删改查操作,我们使用了 MongoDB的官方Go驱动程序,实现了插入、查询、更新和删除操作,感兴趣的可以了解一下
    2024-01-01
  • Go语言中字符串的查找方法小结

    Go语言中字符串的查找方法小结

    这篇文章主要介绍了Go语言中字符串的查找方法小结,示例的main函数都是导入strings包然后使用其中的方法,需要的朋友可以参考下
    2015-10-10
  • go中利用reflect实现json序列化的示例代码

    go中利用reflect实现json序列化的示例代码

    和Java语言一样,Go也实现运行时反射,这为我们提供一种可以在运行时操作任意类型对象的能力,本文给大家介绍了在go中如何利用reflect实现json序列化,需要的朋友可以参考下
    2024-03-03

最新评论