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

声明:本站(华域联盟www.cnhackhy.com)所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。