Documentation ¶
Overview ¶
Package rnd provides a pre-seeded PRNG.
It is meant for cases where a library wants to guarantee non-deterministic behavior. In that case, the API of math/rand provides several challenges:
- *rand.Rand is not concurrency safe, so you need to wrap it into a mutex or use a sync.Pool. Locking is less efficient, as it holds the mutex for longer than required. sync.Pool means random number generation might allocate.
- The default source (used by the top-level function) is concurrency safe, but not seeded. A library can not assume its user remembered to properly seed it. It can also not be sure a different library did not seed it with a bad seed (e.g. many people use the current time).
This package works around that by using a concurrency safe and properly seeded shared source and not allowing to seed it manually.
Index ¶
- func ExpFloat64() float64
- func Float32() float32
- func Float64() float64
- func Int() int
- func Int31() int32
- func Int31n(n int32) int32
- func Int63() int64
- func Int63n(n int64) int64
- func Intn(n int) int
- func NormFloat64() float64
- func Perm(n int) []int
- func Read(p []byte) (n int, err error)
- func Shuffle[T any](s []T)
- func Uint32() uint32
- func Uint64() uint64
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ExpFloat64 ¶
func ExpFloat64() float64
ExpFloat64 returns an exponentially distributed float64 in the range (0, +math.MaxFloat64] with an exponential distribution whose rate parameter (lambda) is 1 and whose mean is 1/lambda (1). To produce a distribution with a different rate parameter, callers can adjust the output using:
sample = ExpFloat64() / desiredRateParameter
func Float32 ¶
func Float32() float32
Float32 returns, as a float32, a pseudo-random number in [0.0,1.0).
func Float64 ¶
func Float64() float64
Float64 returns, as a float64, a pseudo-random number in [0.0,1.0).
func Int31 ¶
func Int31() int32
Int31 returns a non-negative pseudo-random 31-bit integer as an int32.
func Int31n ¶
Int31n returns, as an int32, a non-negative pseudo-random number in [0,n). It panics if n <= 0.
func Int63 ¶
func Int63() int64
Int63 returns a non-negative pseudo-random 63-bit integer as an int64.
func Int63n ¶
Int63n returns, as an int64, a non-negative pseudo-random number in [0,n). It panics if n <= 0.
func Intn ¶
Intn returns, as an int, a non-negative pseudo-random number in [0,n). It panics if n <= 0.
func NormFloat64 ¶
func NormFloat64() float64
NormFloat64 returns a normally distributed float64 in the range [-math.MaxFloat64, +math.MaxFloat64] with standard normal distribution (mean = 0, stddev = 1). To produce a different normal distribution, callers can adjust the output using:
sample = NormFloat64() * desiredStdDev + desiredMean
Types ¶
This section is empty.