Documentation ¶
Overview ¶
Package rand implements pseudo-random number generators unsuitable for security-sensitive work.
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 Float64() float64
- func Intn(n int) int
- func Shuffle[S ~[]E, E any](r *Rand, s S)
- func Uint64() uint64
- type Rand
- func (r *Rand) ExpFloat64() float64
- func (r *Rand) Float32() float32
- func (r *Rand) Float64() float64
- func (r *Rand) Get() *Rand
- 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 Float64 ¶
func Float64() float64
Float64 returns, as a float64, a uniformly distributed pseudo-random number in the half-open interval [0.0, 1.0).
It is safe to call Float64 concurrently from multiple goroutines, and its performance does not degrade when the parallelism increases. However, non-concurrent use of multiple instances of Rand.Float64 should be generally preferred over the concurrent use of Float64, as Rand.Float64 is faster, and it generates higher quality pseudo-random numbers.
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.
It is safe to call Intn concurrently from multiple goroutines, and its performance does not degrade when the parallelism increases. However, non-concurrent use of multiple instances of Rand.Intn should be generally preferred over the concurrent use of Intn, as Rand.Intn is faster, and it generates higher quality pseudo-random numbers.
func Uint64 ¶
func Uint64() uint64
Uint64 returns a uniformly distributed pseudo-random 64-bit value as an uint64.
It is safe to call Uint64 concurrently from multiple goroutines, and its performance does not degrade when the parallelism increases. However, non-concurrent use of multiple instances of Rand.Uint64 should be generally preferred over the concurrent use of Uint64, as Rand.Uint64 is faster, and it generates higher quality pseudo-random numbers.
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) Get ¶
Get returns r, initializing it as if it was constructed by New if it was previously uninitialized. This allows to conveniently use Rand values non-deterministically without explicit initialization:
type Dice struct { rng rand.Rand } func (d *Dice) Roll() int { return d.rng.Get().Intn(6) }
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 Shuffle 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.