首页 >后端开发 >Golang > 正文

golang实现生成不重复随机数

原创2019-12-24 15:55:1801859

代码示例如下:

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
}

输出结果如图:

21fc224daba89133bf98d84c9ee601e.png

相关文章教程推荐:golang教程

以上就是golang实现生成不重复随机数的详细内容,更多请关注php中文网其它相关文章!

php中文网最新课程二维码

声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理

相关文章

相关视频


网友评论

文明上网理性发言,请遵守 新闻评论服务协议

我要评论
  • 专题推荐

    推荐视频教程
  • Go编程基础视频教程Go编程基础视频教程
  • Go参考手册Go参考手册
  • Go 中文开发手册Go 中文开发手册
  • go语言基础与基本函数go语言基础与基本函数
  • 视频教程分类