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

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

本文由 华域联盟 原创撰写:华域联盟 » Golang编程实现生成n个从a到b不重复随机数的方法

转载请保留出处和原文链接:https://www.cnhackhy.com/110173.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们