隨機數使用比較普遍,例如,抽獎、均衡等等。算法
下面簡單說明其使用方法。dom
package main import ( "log" "math/rand" ) func main() { i := rand.Intn(3) log.Println(i) }
output:code
$ ./t
2018/02/24 11:40:58 2
$ ./t
2018/02/24 11:40:59 2
$ ./t
2018/02/24 11:41:00 2
$ ./t
2018/02/24 11:41:01 2
$ ./t
2018/02/24 11:41:02 2
$ ./t
2018/02/24 11:41:02 2
$ ./t
2018/02/24 11:41:03 2
$ ./t
2018/02/24 11:41:04 2對象
其中import
rand.Intn(n int)隨機數
返回[0,n)之間的隨機數方法
每次執行時獲得的結果都是同樣的。im
沒有調用Seed時, 默認使用Seed(1)。種子不變,產生的隨機數就會不變。計算機
package main import ( "log" "math/rand" "time" ) func main() { rand.Seed(time.Now().UnixNano()) i := rand.Intn(3) log.Println(i) }
output時間
$ ./t
2018/02/24 11:43:29 0
$ ./t
2018/02/24 11:43:31 2
$ ./t
2018/02/24 11:43:33 1
$ ./t
2018/02/24 11:43:34 2
$ ./t
2018/02/24 11:43:35 0
$ ./t
2018/02/24 11:43:36 2
$ ./t
2018/02/24 11:43:37 1
$ ./t
2018/02/24 11:43:38 1
$ ./t
2018/02/24 11:43:39 2
$ ./t
2018/02/24 11:43:40 2
$ ./t
2018/02/24 11:43:44 0
使用時間做爲種子,輸出徹底隨機數。
package main import ( "log" "math/rand" "time" ) func main() { rand.Seed(time.Now().UnixNano()) log.Println(rand.Perm(3)) }
output:
$ ./t
2018/02/24 12:04:27 [0 1 2]
$ ./t
2018/02/24 12:04:28 [0 2 1]
$ ./t
2018/02/24 12:04:30 [0 2 1]
$ ./t
2018/02/24 12:04:32 [0 1 2]
Perm(n)產生[0,n)的僞隨機序列。
隨機種子(Random Seed)是計算機專業術語,一種以隨機數做爲對象的以真隨機數(種子)爲初始條件的隨機數。通常計算機的隨機數都是僞隨機數,以一個真隨機數(種子)做爲初始條件,而後用必定的算法不停迭代產生隨機數。
種子通常使用當前的系統時間,這是徹底隨機的。