Documentation ¶
Overview ¶
Package clrand implements CPU-local random number generators. These may be used simultaneously by many goroutines without significant cache contention.
This package is based on golang.org/x/exp/rand and uses the PCG generator from that package. This package also provides a rand.Source to be used with that package.
An important difference between the random number generators in this package and the ones provided by golang.org/x/exp/rand (and math/rand) is that they are deterministic whereas the generators in this package are not: even when starting from the same initial seed, Sources from this package return sequences of values that vary from run to run. For this reason, there is no top-level Seed function, and all Sources (including the global Source used by the package functions Int, Intn, and so on) are randomly seeded when they are created.
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(n int, swap func(i, j int))
- func Uint32() uint32
- func Uint64() uint64
- type Source
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
func Read ¶
Read generates len(p) random bytes and writes them into p. It always returns len(p) and a nil error.
Types ¶
type Source ¶
type Source struct {
// contains filtered or unexported fields
}
A Source is a source of uniformly-distributed pseudo-random uint64 values in the range [0, 1<<64). It implements golang.org/x/exp/rand.Source.
By design, Source is not deterministic: even starting with the same initial state, it does not generate the same values from run to run. Therefore, a Source is always created with a randomized seed and Source.Seed is a no-op.