利用纳秒作为种子,每次生成随机数都给一次种子。

import ("math/rand""time"
)const char = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"// 产生32位随机字符串
func rnd() {r := rand.New(rand.NewSource(time.Now().UnixNano())) // 产生随机种子bytes := []byte(char)result := []byte{}for i := 0; i < 32; i++ {result = append(result, bytes[r.Intn(len(bytes))])}fmt.Println(string(result))
}func main() {for i := 0; i < 50; i++ {rnd()}
}

打印结果重复。道理很简单,cpu速度太快了~~~

种子一样,出来随机数就一样。

lP1RbPCV3ZLvXt3gYrMvlspvXzoPDpx8
lP1RbPCV3ZLvXt3gYrMvlspvXzoPDpx8
lP1RbPCV3ZLvXt3gYrMvlspvXzoPDpx8
lP1RbPCV3ZLvXt3gYrMvlspvXzoPDpx8
lP1RbPCV3ZLvXt3gYrMvlspvXzoPDpx8
lP1RbPCV3ZLvXt3gYrMvlspvXzoPDpx8
lP1RbPCV3ZLvXt3gYrMvlspvXzoPDpx8
lP1RbPCV3ZLvXt3gYrMvlspvXzoPDpx8
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN
aiD3eyRoK0O5w1Q8Ve7oL8eYMaeaRipN

那怎么解决呢?在最开始初始化一次种子,后面怎么折腾都不会重复了。

import ("math/rand""time"
)const char = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"// 产生32位随机字符串
func rnd() {// 这里不再需要播种// r := rand.New(rand.NewSource(time.Now().UnixNano())) // 产生随机种子bytes := []byte(char)result := []byte{}for i := 0; i < 32; i++ {result = append(result, bytes[rand.Intn(len(bytes))])}fmt.Println(string(result))
}func main() {//初始化一次全局种子rand.Seed(time.Now().UnixNano())for i := 0; i < 50; i++ {rnd()}
}

结果很舒爽,不会再重复。

70ToknlyI1ftW5971HRJT7KJhfVIjVNQ
jcMuyKg1pKs2kKmkobsGKoyz0fziVNSv
EjnUYLe0nIveS0zlF4T8Yes97uRpVbL6
CdvnKc7SRkuKkaCkfxuKfHs4PcVfDA7l
ROi6amFFTPy3DQ3mcCDKjsn3LoCYsKC4
aWNcdykOjzHsllSWrTL6opDEkWoXkLRD
9nGIkhlxnvLOP73jJHLwXyhGKmFDksTL
tFbxUFvs06wp18KxCt7lIh14sUsNjho3
jSnz8XmdLDesYJpn1QqSZI9BhnCW2Qa9
goBzwNLIIbEVPqRORv4i3tobLkKkaMy4
Y0u8WpmkwJvny6dwWIsEIe0I39ORRVjn
fgIptKG3GHvnzBMo4cZHlpe7ypmBsjRG
1i5YwTzppAz8hRwJ7SieMmSjhL4fdWfl
cF7UqQ4Fyyq7T6p4e9y33bhd1NEeWjpR
Ec13eBIkD4IH5m1aN9ykmBYXCZrdpGO5
sKOczsOgLJc9IfkyQDMoMIFABIKPdX1Q
OmhcrQ7LoU0ikxKdVEBqQqGDknp4tzW4
9C2cP52MpQbAsh727b21kb40UryUrPy6
Ev2EsZX2a9g1eyU2ctkAV1CiLZIH3i78
mDXBPTAxx6sANRRbUVOrl2hO7qeE9dhV
pHunirerFPivbEs6IjMGdSjpsMHjK0d0
SjA5NRb6SANN6B6JgUDWYHOZXeLc8t0S
5Am951UYllnOenuudXK4zuvlmm8a62xI
PV5wvP6IC1TSRiQQxUkVtKkotdysI99i
kuDONUnN06YT0VKgynjvpSihyBGbTZYI
rqcMx1MRWT241kJwAJYOBWADWShmTbRr
y8xKvEuVWhHpQ0c1pCEzLiRgMsLp8qp4
KqSgl73dKQfvgjuZOBjL9PjFIYRjfLOX
nmlb3UAPOBcTVOQYejOmHwqPCgZi5yxe
V0iwUp2FXOX5fLkXx9L87Cn44wivwfO9
PO7VuvBivjrbCKHVTU8vo8XhdwNEYUTm
B9L4LWIILKjgRtAtoVYGJdXbix4VEVtR
lsFzCneIMK8hmV3chHlxQSWcqu9L3gAd
gnflXX2Kc78ClK0BFNAmdmMeHbVhzEd2
6eJm4d1bdXQOp1zxU8n7hZ5TrxUKbFEO
evCVdIR3ZByTLGuawcHxxSybrXIzV1cr
pFEZE0pzlKpapcDMXfctaXLl6cjrzkKk
h5N4btnoNJ54EQqzx5r1olwEswjRbbJx
piyrQv0J1nVTabezUr6jNB8wzzMrdHtX
qe8gLqntWjPP7ePqveDPNUc1khRT4Shh
APOAnK8GBW80mAuAzNds7gb2MoK7BdEY
AsGhnyH5oC7cYoyC0RfCGg7dWa55tGgD
lB9T07Td3pTDpelBKf02WdrkdBgoNnaI
QnLYPuDTOfeJtJM12nRSCmQgvtAhJzcL
qxO2m9yjVhSAIsnC0eh3M3scgtX8a7rZ
LiOvWsGyqDs0iA9YKMspdRxXFoY4jTI1
OecDZgo4jyQoZu0mYzSy40YyxGwZvNYs
J4rX3bhKYBjx5Uww44qDB15QxMsLduiA
gBAm2GoYE6aXteGDeaMJ3zC21Hfu4Zy7
exzxLxnwb2obF6WlJyOUdaGJs06VVGy0

实际使用时,如果每个循环中会进行很多操作,那么可能不会重复,但如果你开启了多个线程,仍旧可能重复。

参考:
golang中的随机数rand
golang rand seed 随机数

Golang学习日志 ━━ (批量)循环生成随机数出现重复的解决办法相关推荐

  1. C# Random循环生成随机数重复问题解决方案

    C# Random循环生成随机数重复问题解决方案 参考文章: (1)C# Random循环生成随机数重复问题解决方案 (2)https://www.cnblogs.com/duanjt/p/70641 ...

  2. Golang学习日志 ━━ LiteIDE的主要配置

    用LiteIDE开发golang半年换到VSCode,vs用了一年多后,最近又用回LiteIDE,感觉还是针对性强的IDE用起来舒适,界面什么不重要. 我个人一般什么东西都喜欢用默认配置,能不改的就不 ...

  3. php批量随机生成数字不重复,php批量随机生成数字不重复

    PHP随机数批量生成: 在PHP中使用rand()函数生成随机数,然后判断此随机数是否已存在,若不存在就将此随机数存入数组,多次重复此方法即可批量生成随机数不重复./** * 随机多个数字,可设定是否 ...

  4. 【VBA学习问题】Excel2016无法保存宏文件的解决办法

    [VBA学习问题]Excel2016无法保存宏文件的解决办法 参考文章: (1)[VBA学习问题]Excel2016无法保存宏文件的解决办法 (2)https://www.cnblogs.com/bb ...

  5. js ajax 递归,javascript ajax循环请求/ 长轮询终极解决办法——递归

    ajax循环请求,不能使用for循环,原因如下: 1. 因为ajax是异步执行,在还没有拿到服务器响应内容,就进入下一个for循环中 解决办法:递归currentIndex = 0; function ...

  6. node编写定时任务,for循环只执行一遍的解决办法

    在用node编写定时任务时候,发现for循环只执行i=0这一次,就不接着循环执行了,下面贴上代码: exports.task = async function(ctx){ let { app } = ...

  7. c++日志文件中文显示乱码的问题及解决办法

    近段时间在做战斗系统,昨天观察日志时发现中文显示乱码,而且奇怪的是有些中文日志是正常的,有些中文日志乱码 就是下面这种表现 Debug - Thu Oct 24 20:42:35 2019 : sys ...

  8. eclipse启动mysql报错日志在哪儿_Eclipse启动报错,解决办法

    打开log日志,发现如下错误.原因是修改了计算机用户名导致 !SESSION Thu Aug 30 08:55:41 CST 2018 -------------------------------- ...

  9. 关于使用iconfont图标总生成小长方形框的解决办法

    起因是在联系仿写网易的静态页面的时候,使用iconfont小图标的时候,引入正确,但是在页面上一直显示的是一个长方形小框的页面.各种搜索终于找到了解决办法. 主要原因是由于iconfont.css中路 ...

最新文章

  1. Eclipse中快速为类提供构造器、get()、set()方法、重写toString()、hasCode()、equals()等
  2. ARM MMU工作原理剖析[转]
  3. linux shell脚本备份mysql数据库
  4. IIS安装时,安装程序无法复制一个或多个文件。特定错误码是0x4b8
  5. GB35114—④、附 录A、B
  6. EFcore数据库随机排序获取数据
  7. php数组中随机抽取,PHP 数组中随机抽取一些元素_PHP教程
  8. 《Dynamically Fused Graph Network for Multi-hop Reasoning》 论文笔记
  9. xbox手柄适配器驱动_修复XBox DVD驱动器
  10. NatApp免费内网穿透
  11. 免备案云服务器选香港好还是美国好
  12. Postman模拟接口API:接收请求报文equest,响应返回固定报文response
  13. Java实现文件拷贝,以及修改文件扩展名
  14. 【工作交接】 Touch Screen 模拟按键实现
  15. arduino声音传感器与二极管_怎样使用Arduino构建基于声音传感器的警报
  16. show processlist 命令详解
  17. 网吧服务器点歌系统,和朋友在网吧五黑,看到网吧有点歌系统,就点了一首……...
  18. 2022年网络安全六大趋势预测
  19. 嘘!P站数据分析年报;各省市疫情感染进度条;爱奇艺推出元宇宙App;You推出AI聊天机器人;GitHub今日热榜 | ShowMeAI资讯日报
  20. 计算机结构原理与组成ppt,计算机组成原理与系统结构课件.ppt

热门文章

  1. vulkan管线学习6
  2. 基于知识图谱的问答系统(protege,jena,jieba分词的结合)
  3. 【3DSlicer】基于心脏ct影像重建3d模型及导出
  4. MySQL——02【基本CRUD操作】
  5. 采用matlab编制含电气热的综合能源优化程序,采用yalmip和cplex求解,通过二阶锥模型实现相关约束限制
  6. java 构造函数嵌套_关于java:是否有与嵌套类关联的构造函数
  7. 代码重构/坏味道详解
  8. JAVA对比崔克,【内含投票】棋逢对手!闪电Tarmac SL6 Comp与崔克Émonda SL6详细测评,你喜欢哪款?...
  9. SNS网站Feed功能设计
  10. java字符串去重,精心整理