解讀rand.Seed(time.Now().UnixNano())的作用及說明
rand.Seed(time.Now().UnixNano())作用
rand.Int
獲取隨機(jī)數(shù),不加隨機(jī)種子,每次遍歷獲取都是重復(fù)的一些隨機(jī)數(shù)據(jù)
rand.Seed(time.Now().UnixNano())
設(shè)置隨機(jī)數(shù)種子,加上這行代碼,可以保證每次隨機(jī)都是隨機(jī)的
golang rand seed 隨機(jī)數(shù)
rand.Seed(time.Now().UnixNano()) randInsert := rand.Intn(4) // [0, 4)
如果每次調(diào)rand.Intn()前都調(diào)了rand.Seed(x),每次的x相同的話,每次的rand.Intn()也是一樣的。
兩種解決方案
1. 只調(diào)一次rand.Seed():在全局初始化調(diào)用一次seed,每次調(diào)rand.Intn()前都不再調(diào)rand.Seed()。
2. 調(diào)多次rand.Seed(x),但每次x保證不一樣:每次使用納秒級別的種子。強(qiáng)烈不推薦這種,因?yàn)楦卟l(fā)的情況下納秒也可能重復(fù)。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Golang基于epoll實(shí)現(xiàn)最簡單網(wǎng)絡(luò)通信框架
這篇文章主要為大家詳細(xì)介紹了Golang如何基于epoll實(shí)現(xiàn)最簡單網(wǎng)絡(luò)通信框架,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)學(xué)習(xí)2023-06-06golang中的string與其他格式數(shù)據(jù)的轉(zhuǎn)換方法詳解
這篇文章主要介紹了golang中的string與其他格式數(shù)據(jù)的轉(zhuǎn)換方法,文章通過代碼示例介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-10-10Golang使用CGO與Plugin技術(shù)運(yùn)行加載C動態(tài)庫
這篇文章主要介紹了Golang使用CGO與Plugin技術(shù)運(yùn)行加載C動態(tài)庫,Golang?程序在運(yùn)行時(shí)加載C動態(tài)庫的技術(shù),跳過了Golang項(xiàng)目編譯階段需要鏈接C動態(tài)庫的過程,提高了Golang項(xiàng)目開發(fā)部署的靈活性2022-07-07