Documentation ¶
Overview ¶
Package rand implements pseudo-random number generators unsuitable for security-sensitive work.
Top-level functions that do not have a Rand parameter, such as Float64 and Int, use non-deterministic goroutine-local pseudo-random data sources that produce different sequences of values each time a program is run. These top-level functions are safe for concurrent use by multiple goroutines, and their performance does not degrade when the parallelism increases. Rand methods and functions with Rand parameter are not safe for concurrent use, but should generally be preferred because of determinism, higher speed and quality.
This package is considerably faster and generates higher quality random than the math/rand package. However, this package's outputs might be predictable regardless of how it's seeded. For random numbers suitable for security-sensitive work, see the crypto/rand package.
Index ¶
- func Code(length int) (code string)
- 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 ShuffleSlice[S ~[]E, E any](r *Rand, s S)
- func Uint32() uint32
- func Uint32n(n uint32) uint32
- func Uint64() uint64
- func Uint64n(n uint64) uint64
- type Rand
- func (r *Rand) ExpFloat64() float64
- func (r *Rand) Float32() float32
- func (r *Rand) Float64() float64
- func (r *Rand) Int() int
- func (r *Rand) Int31() int32
- func (r *Rand) Int31n(n int32) int32
- func (r *Rand) Int63() int64
- func (r *Rand) Int63n(n int64) int64
- func (r *Rand) Intn(n int) int
- func (r *Rand) MarshalBinary() ([]byte, error)
- func (r *Rand) NormFloat64() float64
- func (r *Rand) Perm(n int) []int
- func (r *Rand) Read(p []byte) (n int, err error)
- func (r *Rand) Seed(seed uint64)
- func (r *Rand) Shuffle(n int, swap func(i, j int))
- func (r *Rand) Uint32() uint32
- func (r *Rand) Uint32n(n uint32) uint32
- func (r *Rand) Uint64() uint64
- func (r *Rand) Uint64n(n uint64) uint64
- func (r *Rand) UnmarshalBinary(data []byte) error
- type Zipf
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 uniformly distributed pseudo-random number in the half-open interval [0.0, 1.0).
func Float64 ¶
func Float64() float64
Float64 returns, as a float64, a uniformly distributed pseudo-random number in the half-open interval [0.0, 1.0).
func Int31 ¶
func Int31() int32
Int31 returns a uniformly distributed non-negative pseudo-random 31-bit integer as an int32.
func Int31n ¶
Int31n returns, as an int32, a uniformly distributed non-negative pseudo-random number in the half-open interval [0, n). It panics if n <= 0.
func Int63 ¶
func Int63() int64
Int63 returns a uniformly distributed non-negative pseudo-random 63-bit integer as an int64.
func Int63n ¶
Int63n returns, as an int64, a uniformly distributed non-negative pseudo-random number in the half-open interval [0, n). It panics if n <= 0.
func Intn ¶
Intn returns, as an int, a uniformly distributed non-negative pseudo-random number in the half-open interval [0, n). It panics if n <= 0.
func NormFloat64 ¶
func NormFloat64() float64
NormFloat64 returns a normally distributed float64 in the range -math.MaxFloat64 through +math.MaxFloat64 inclusive, 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 Perm ¶
Perm returns, as a slice of n ints, a pseudo-random permutation of the integers in the half-open interval [0, n).
func Read ¶
Read generates len(p) pseudo-random bytes and writes them into p. It always returns len(p) and a nil error.
func Shuffle ¶
Shuffle pseudo-randomizes the order of elements. n is the number of elements. Shuffle panics if n < 0. swap swaps the elements with indexes i and j.
For shuffling elements of a slice, prefer the top-level ShuffleSlice function.
func ShuffleSlice ¶
ShuffleSlice pseudo-randomizes the order of the elements of s.
When r is nil, ShuffleSlices uses non-deterministic goroutine-local pseudo-random data source, and is safe for concurrent use from multiple goroutines.
func Uint32 ¶
func Uint32() uint32
Uint32 returns a uniformly distributed pseudo-random 32-bit value as an uint32.
func Uint32n ¶
Uint32n returns, as an uint32, a uniformly distributed pseudo-random number in [0, n). Uint32n(0) returns 0.
Types ¶
type Rand ¶
type Rand struct {
// contains filtered or unexported fields
}
Rand is a pseudo-random number generator based on the SFC64 algorithm by Chris Doty-Humphrey.
SFC64 has 256 bits of state, average period of ~2^255 and minimum period of at least 2^64. Generators returned by New (with empty or distinct seeds) are guaranteed to not run into each other for at least 2^64 iterations.
func New ¶
New returns an initialized generator. If seed is empty, generator is initialized to a non-deterministic state. Otherwise, generator is seeded with the values from seed. New panics if len(seed) > 3.
func (*Rand) ExpFloat64 ¶
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 (*Rand) Float32 ¶
Float32 returns, as a float32, a uniformly distributed pseudo-random number in the half-open interval [0.0, 1.0).
func (*Rand) Float64 ¶
Float64 returns, as a float64, a uniformly distributed pseudo-random number in the half-open interval [0.0, 1.0).
func (*Rand) Int31 ¶
Int31 returns a uniformly distributed non-negative pseudo-random 31-bit integer as an int32.
func (*Rand) Int31n ¶
Int31n returns, as an int32, a uniformly distributed non-negative pseudo-random number in the half-open interval [0, n). It panics if n <= 0.
func (*Rand) Int63 ¶
Int63 returns a uniformly distributed non-negative pseudo-random 63-bit integer as an int64.
func (*Rand) Int63n ¶
Int63n returns, as an int64, a uniformly distributed non-negative pseudo-random number in the half-open interval [0, n). It panics if n <= 0.
func (*Rand) Intn ¶
Intn returns, as an int, a uniformly distributed non-negative pseudo-random number in the half-open interval [0, n). It panics if n <= 0.
func (*Rand) MarshalBinary ¶
MarshalBinary returns the binary representation of the current state of the generator.
func (*Rand) NormFloat64 ¶
NormFloat64 returns a normally distributed float64 in the range -math.MaxFloat64 through +math.MaxFloat64 inclusive, 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 (*Rand) Perm ¶
Perm returns, as a slice of n ints, a pseudo-random permutation of the integers in the half-open interval [0, n).
func (*Rand) Read ¶
Read generates len(p) pseudo-random bytes and writes them into p. It always returns len(p) and a nil error.
func (*Rand) Seed ¶
Seed uses the provided seed value to initialize the generator to a deterministic state.
func (*Rand) Shuffle ¶
Shuffle pseudo-randomizes the order of elements. n is the number of elements. Shuffle panics if n < 0. swap swaps the elements with indexes i and j.
For shuffling elements of a slice, prefer the top-level ShuffleSlice function.
func (*Rand) Uint32 ¶
Uint32 returns a uniformly distributed pseudo-random 32-bit value as an uint32.
func (*Rand) Uint32n ¶
Uint32n returns, as an uint32, a uniformly distributed pseudo-random number in [0, n). Uint32n(0) returns 0.
func (*Rand) Uint64 ¶
Uint64 returns a uniformly distributed pseudo-random 64-bit value as an uint64.
func (*Rand) Uint64n ¶
Uint64n returns, as an uint64, a uniformly distributed pseudo-random number in [0, n). Uint64n(0) returns 0.
func (*Rand) UnmarshalBinary ¶
UnmarshalBinary sets the state of the generator to the state represented in data.
type Zipf ¶
type Zipf struct {
// contains filtered or unexported fields
}
A Zipf generates Zipf distributed variates.