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

本文实例讲述了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语言程序设计有所帮助。

声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#nhooo.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。