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() float32
Float32 returns, as a float32, a pseudo-random number in the half-open interval [0.0,1.0) from the default Source.
func Float64() float64
Float64 returns, as a float64, a pseudo-random number in the half-open interval [0.0,1.0) from the default Source.
func Int() int
Int returns a non-negative pseudo-random int from the default Source.
func Int32() int32
Int32 returns a non-negative pseudo-random 31-bit integer as an int32 from the default Source.
func Int32N(n int32) int32
Int32N returns, as an int32, a pseudo-random number in the half-open interval [0,n) from the default Source. It panics if n <= 0.
func Int64() int64
Int64 returns a non-negative pseudo-random 63-bit integer as an int64 from the default Source.
func Int64N(n int64) int64
Int64N returns, as an int64, a pseudo-random number in the half-open interval [0,n) from the default Source. It panics if n <= 0.
func IntN(n int) int
IntN returns, as an int, a pseudo-random number in the half-open interval [0,n) from the default Source. It panics if n <= 0.
▹ Example
func N[Int intType](n Int) Int
N returns a pseudo-random number in the half-open interval [0,n) from the default Source. The type parameter Int can be any integer type. It panics if n <= 0.
▹ Example
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(n int) []int
Perm returns, as a slice of n ints, a pseudo-random permutation of the integers in the half-open interval [0,n) from the default Source.
▹ Example
func Shuffle(n int, swap func(i, j int))
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.
▹ Example
▹ Example (SlicesInUnison)
func Uint() uint
Uint returns a pseudo-random uint from the default Source.
func Uint32() uint32
Uint32 returns a pseudo-random 32-bit value as a uint32 from the default Source.
func Uint32N(n uint32) uint32
Uint32N returns, as a uint32, a pseudo-random number in the half-open interval [0,n) from the default Source. It panics if n <= 0.
func Uint64() uint64
Uint64 returns a pseudo-random 64-bit value as a uint64 from the default Source.
func Uint64N(n uint64) uint64
Uint64N returns, as a uint64, a pseudo-random number in the half-open interval [0,n) from the default Source. It panics if n <= 0.
func UintN(n uint) uint
UintN returns, as a uint, a pseudo-random number in the half-open interval [0,n) from the default Source. It panics if n <= 0.
A ChaCha8 is a ChaCha8-based cryptographically strong random number generator.
type ChaCha8 struct {
// contains filtered or unexported fields
}
func NewChaCha8(seed [32]byte) *ChaCha8
NewChaCha8 returns a new ChaCha8 seeded with the given seed.
func (c *ChaCha8) MarshalBinary() ([]byte, error)
MarshalBinary implements the encoding.BinaryMarshaler interface.
func (c *ChaCha8) Read(p []byte) (n int, err error)
Read reads exactly len(p) bytes into p. It always returns len(p) and a nil error.
If calls to Read and Uint64 are interleaved, the order in which bits are returned by the two is undefined, and Read may return bits generated before the last call to Uint64.
func (c *ChaCha8) Seed(seed [32]byte)
Seed resets the ChaCha8 to behave the same way as NewChaCha8(seed).
func (c *ChaCha8) Uint64() uint64
Uint64 returns a uniformly distributed random uint64 value.
func (c *ChaCha8) UnmarshalBinary(data []byte) error
UnmarshalBinary implements the encoding.BinaryUnmarshaler interface.
A PCG is a PCG generator with 128 bits of internal state. A zero PCG is equivalent to NewPCG(0, 0).
type PCG struct {
// contains filtered or unexported fields
}
func NewPCG(seed1, seed2 uint64) *PCG
NewPCG returns a new PCG seeded with the given values.
func (p *PCG) MarshalBinary() ([]byte, error)
MarshalBinary implements the encoding.BinaryMarshaler interface.
func (p *PCG) Seed(seed1, seed2 uint64)
Seed resets the PCG to behave the same way as NewPCG(seed1, seed2).
func (p *PCG) Uint64() uint64
Uint64 return a uniformly-distributed random uint64 value.
func (p *PCG) UnmarshalBinary(data []byte) error
UnmarshalBinary implements the encoding.BinaryUnmarshaler interface.
A Rand is a source of random numbers.
type Rand struct {
// contains filtered or unexported fields
}
func New(src Source) *Rand
New returns a new Rand that uses random values from src to generate other random values.
func (r *Rand) 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 (r *Rand) Float32() float32
Float32 returns, as a float32, a pseudo-random number in the half-open interval [0.0,1.0).
func (r *Rand) Float64() float64
Float64 returns, as a float64, a pseudo-random number in the half-open interval [0.0,1.0).
func (r *Rand) Int() int
Int returns a non-negative pseudo-random int.
func (r *Rand) Int32() int32
Int32 returns a non-negative pseudo-random 31-bit integer as an int32.
func (r *Rand) Int32N(n int32) int32
Int32N returns, as an int32, a non-negative pseudo-random number in the half-open interval [0,n). It panics if n <= 0.
func (r *Rand) Int64() int64
Int64 returns a non-negative pseudo-random 63-bit integer as an int64.
func (r *Rand) Int64N(n int64) int64
Int64N returns, as an int64, a non-negative pseudo-random number in the half-open interval [0,n). It panics if n <= 0.
func (r *Rand) IntN(n int) int
IntN returns, as an int, a non-negative pseudo-random number in the half-open interval [0,n). It panics if n <= 0.
func (r *Rand) 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 (r *Rand) Perm(n int) []int
Perm returns, as a slice of n ints, a pseudo-random permutation of the integers in the half-open interval [0,n).
func (r *Rand) Shuffle(n int, swap func(i, j int))
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.
func (r *Rand) Uint() uint
Uint returns a pseudo-random uint.
func (r *Rand) Uint32() uint32
Uint32 returns a pseudo-random 32-bit value as a uint32.
func (r *Rand) Uint32N(n uint32) uint32
Uint32N returns, as a uint32, a non-negative pseudo-random number in the half-open interval [0,n). It panics if n == 0.
func (r *Rand) Uint64() uint64
Uint64 returns a pseudo-random 64-bit value as a uint64.
func (r *Rand) Uint64N(n uint64) uint64
Uint64N returns, as a uint64, a non-negative pseudo-random number in the half-open interval [0,n). It panics if n == 0.
func (r *Rand) UintN(n uint) uint
UintN returns, as a uint, a non-negative pseudo-random number in the half-open interval [0,n). It panics if n == 0.
A Source is a source of uniformly-distributed pseudo-random uint64 values in the range [0, 1<<64).
A Source is not safe for concurrent use by multiple goroutines.
type Source interface { Uint64() uint64 }
A Zipf generates Zipf distributed variates.
type Zipf struct {
// contains filtered or unexported fields
}
func NewZipf(r *Rand, s float64, v float64, imax uint64) *Zipf
NewZipf returns a Zipf variate generator. The generator generates values k ∈ [0, imax] such that P(k) is proportional to (v + k) ** (-s). Requirements: s > 1 and v >= 1.
func (z *Zipf) Uint64() uint64
Uint64 returns a value drawn from the Zipf distribution described by the Zipf object.