bb/lib/rand.go

36 lines
549 B
Go
Raw Normal View History

2022-08-04 04:24:27 +00:00
package lib
import (
crand "crypto/rand"
"math"
"math/big"
"math/rand"
"sync"
log "github.com/sirupsen/logrus"
)
var (
once sync.Once
)
// SeedMathRand Credit: https://github.com/hashicorp/consul/blob/main/lib/rand.go
2022-08-04 16:14:35 +00:00
func SeedMathRand() error {
2022-08-04 04:24:27 +00:00
var (
n *big.Int
err error
)
once.Do(func() {
n, err = crand.Int(crand.Reader, big.NewInt(math.MaxInt64))
if err != nil {
log.Errorf("cannot seed math/rand: %s", err)
2022-08-04 16:14:35 +00:00
} else {
log.Debugf("seeding math/rand %+v", n.Int64())
rand.Seed(n.Int64())
2022-08-04 04:24:27 +00:00
}
})
2022-08-04 16:14:35 +00:00
return err
2022-08-04 04:24:27 +00:00
}