每次隨機金額都一樣
func?SimpleRand(count,?amount?int64)?int64?{ ???//當紅包數量剩余一個的時候,就直接返回剩余金額 ???if?count?==?1?{ ??????return?amount ???} ???//計算最大可高度金額 ???max?:=?amount?-?min*count ???rand.Seed(time.Now().UnixNano()) ???x?:=?rand.Int63n(max)?+?min ???return?x }
運行結果:650,650,650,650,650,650,650,650,650,650,
每個循環都是一樣的650,我用的是windows開發,難道是不支持
UnixNano()?這個函數嗎
2020-05-15
//windows可以將就用一下,注意:不是線程安全的..
2020-04-04
是windows是原因,windows系統15ms才會更新一次系統時間,循環的時候這些大概率都是在15ms之內發生的,所以每次都取到了這個種子的偽隨機數的第一個,一個可以參考的解決辦法是,把設置隨機數種子這行代碼,放到循環請求隨機函數前面,隨機數種子是全局的,只需保證每次進行隨機序列計算使用不同種子即可,不必每次隨機都用新的種子