Documentation ¶
Overview ¶
Package rand implements pseudo-random number generators.
Random numbers are generated by a Source. Top-level functions, such as Float64 and Int, use a default shared Source that produces a deterministic sequence of values each time a program is run. Use the Seed function to initialize the default Source if different behavior is required for each run. The default Source, a LockedSource, is safe for concurrent use by multiple goroutines, but Sources created by NewSource are not. However, Sources are small and it is reasonable to have a separate Source for each goroutine, seeded differently, to avoid locking.
For random numbers suitable for security-sensitive work, see the crypto/rand package.
Example (Rand) ¶
This example shows the use of each of the methods on a *Rand. The use of the global functions is the same, without the receiver.
Output: Float32 0.030719291 0.47512934 0.031019364 Float64 0.6906635660087743 0.9898818576905045 0.2683634639782333 ExpFloat64 1.24979080914592 0.3451975160045876 0.5456817760595064 NormFloat64 0.879221333732727 -0.01508980368383761 -1.962250558270421 Int31 2043816560 1870670250 1334960143 Int63 7860766611810691572 1466711535823962239 3836585920276818709 Uint32 2051241581 751073909 1353986074 Uint64 10802154207635843641 14398820303406316826 11052107950969057042 Intn(10) 3 0 1 Int31n(10) 3 8 1 Int63n(10) 4 6 0 Uint64n(10) 2 9 4 Perm [1 3 4 0 2] [2 4 0 3 1] [3 2 0 4 1]
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 Seed(seed uint64)
- func Shuffle(n int, swap func(i, j int))
- func Uint32() uint32
- func Uint64() uint64
- type LockedSource
- type PCGSource
- 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) 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) Uint64() uint64
- func (r *Rand) Uint64n(n uint64) uint64
- type Source
- type Zipf
Examples ¶
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) from the default Source. 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) from the default Source.
func Float64 ¶
func Float64() float64
Float64 returns, as a float64, a pseudo-random number in [0.0,1.0) from the default Source.
func Int31 ¶
func Int31() int32
Int31 returns a non-negative pseudo-random 31-bit integer as an int32 from the default Source.
func Int31n ¶
Int31n returns, as an int32, a non-negative pseudo-random number in [0,n) from the default Source. It panics if n <= 0.
func Int63 ¶
func Int63() int64
Int63 returns a non-negative pseudo-random 63-bit integer as an int64 from the default Source.
func Int63n ¶
Int63n returns, as an int64, a non-negative pseudo-random number in [0,n) from the default Source. It panics if n <= 0.
func Intn ¶
Intn returns, as an int, a non-negative pseudo-random number in [0,n) from the default Source. 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) from the default Source. 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 [0,n) from the default Source.
func Read ¶
Read generates len(p) random bytes from the default Source and writes them into p. It always returns len(p) and a nil error. Read, unlike the Rand.Read method, is safe for concurrent use.
func Seed ¶
func Seed(seed uint64)
Seed uses the provided seed value to initialize the default Source to a deterministic state. If Seed is not called, the generator behaves as if seeded by Seed(1). Seed, unlike the Rand.Seed method, is safe for concurrent use.
func Shuffle ¶
Shuffle pseudo-randomizes the order of elements using the default Source. n is the number of elements. Shuffle panics if n < 0. swap swaps the elements with indexes i and j.
Types ¶
type LockedSource ¶
type LockedSource struct {
// contains filtered or unexported fields
}
LockedSource is an implementation of Source that is concurrency-safe. A Rand using a LockedSource is safe for concurrent use.
The zero value of LockedSource is valid, but should be seeded before use.
func (*LockedSource) Seed ¶
func (s *LockedSource) Seed(seed uint64)
func (*LockedSource) Uint64 ¶
func (s *LockedSource) Uint64() (n uint64)
type PCGSource ¶
type PCGSource struct {
// contains filtered or unexported fields
}
PCGSource is an implementation of a 64-bit permuted congruential generator as defined in
PCG: A Family of Simple Fast Space-Efficient Statistically Good Algorithms for Random Number Generation Melissa E. O’Neill, Harvey Mudd College http://www.pcg-random.org/pdf/toms-oneill-pcg-family-v1.02.pdf
The generator here is the congruential generator PCG XSL RR 128/64 (LCG) as found in the software available at http://www.pcg-random.org/. It has period 2^128 with 128 bits of state, producing 64-bit values. Is state is represented by two uint64 words.
func (*PCGSource) MarshalBinary ¶
MarshalBinary returns the binary representation of the current state of the generator.
func (*PCGSource) Seed ¶
Seed uses the provided seed value to initialize the generator to a deterministic state.
func (*PCGSource) UnmarshalBinary ¶
UnmarshalBinary sets the state of the generator to the state represented in data.
type Rand ¶
type Rand struct {
// contains filtered or unexported fields
}
A Rand is a source of random numbers.
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) Int31n ¶
Int31n returns, as an int32, a non-negative pseudo-random number in [0,n). It panics if n <= 0.
func (*Rand) Int63n ¶
Int63n returns, as an int64, a non-negative pseudo-random number in [0,n). It panics if n <= 0.
func (*Rand) Intn ¶
Intn returns, as an int, a non-negative pseudo-random number in [0,n). It panics if n <= 0.
func (*Rand) NormFloat64 ¶
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 (*Rand) Perm ¶
Perm returns, as a slice of n ints, a pseudo-random permutation of the integers [0,n).
func (*Rand) Read ¶
Read generates len(p) random bytes and writes them into p. It always returns len(p) and a nil error. Read should not be called concurrently with any other Rand method unless the underlying source is a LockedSource.
func (*Rand) Seed ¶
Seed uses the provided seed value to initialize the generator to a deterministic state. Seed should not be called concurrently with any other Rand method.
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.
type Source ¶
A Source represents a source of uniformly-distributed pseudo-random int64 values in the range [0, 1<<64).
type Zipf ¶
type Zipf struct {
// contains filtered or unexported fields
}
A Zipf generates Zipf distributed variates.