網頁

2016年10月2日 星期日

[Go教學] 產生隨機數

想要在go程式中產生隨機數需要使用兩個package -> math/rand , time

rand是用來產生隨機數用的
而time則是以時間來產生隨機種子

先來說說rand的部份
使用前要先用 func (r *Rand) Seed(seed int64) 來產生種子
這邊裡面要填入的是任意整數

接者使用 func (r *Rand) Int() int 來產生隨機數

以下舉個例子


看到這裡可能會產生一個疑問,種子是什麼??

A: 所謂的種子就是用來產生隨機數的一個依據,如果使用同樣的種子,那麼每次執行程式就會跑出一樣的數字
(PS.在同一次執行內產生的依然是隨機)

為了解決這個問題,所以我們用time來當種子
時間是不斷變動的,因此使用時間當種子的話,每次出來的數字就會不一樣了

使用時在Seed的參數中填入 time.Now().Unix()
這串分別是由 func Now() Time 以及 func (t Time) Unix() int64 組成

Now()會回傳現在的時間,並儲存在Time物件中
接著我們用這個物件的成員函數Unix()來將時間轉換成int64

最後這個int64就是我們要的種子

改一下上面的範例試試看

如此一來就可以產生每次執行都不一樣的隨機數囉~

如果文章內容有任何錯誤或是對於內容有疑問都歡迎聯絡我或是在底留言喔OwO

沒有留言:

張貼留言