123456789101112131415161718192021222324252627282930 |
- 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())})
|