package sdkrand import ( "math/rand" "sync" "time" ) // lockedSource is a thread-safe implementation of rand.Source type lockedSource struct { lk sync.Mutex src rand.Source } func (r *lockedSource) Int63() (n int64) { r.lk.Lock() n = r.src.Int63() r.lk.Unlock() return } func (r *lockedSource) Seed(seed int64) { r.lk.Lock() r.src.Seed(seed) r.lk.Unlock() } // SeededRand is a new RNG using a thread safe implementation of rand.Source var SeededRand = rand.New(&lockedSource{src: rand.NewSource(time.Now().UnixNano())})