math/rand
import "math/rand"
Package rand implements pseudo-random number generators suitable for tasks such as simulation, but it should not be used for security-sensitive work. Random numbers are generated by a [Source], usually wrapped in a [Rand]. Both types should be used by a single goroutine at a time: sharing among multiple goroutines requires some kind of synchronization. Top-level functions, such as [Float64] and [Int], are safe for concurrent use by multiple goroutines. This package's outputs might be easil...
Go 1.26.1
Functions
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
math/rand/rand.go:508
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].
math/rand/rand.go:472
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].
math/rand/rand.go:468
func Int() int
Int returns a non-negative pseudo-random int from the default [Source].
math/rand/rand.go:449
func Int31() int32
Int31 returns a non-negative pseudo-random 31-bit integer as an int32 from the default [Source].
math/rand/rand.go:446
func Int31n(n int32) int32
Int31n returns, as an int32, a non-negative pseudo-random number in the half-open interval [0,n) from the default [Source]. It panics if n <= 0.
math/rand/rand.go:459
func Int63() int64
Int63 returns a non-negative pseudo-random 63-bit integer as an int64 from the default [Source].
math/rand/rand.go:434
func Int63n(n int64) int64
Int63n returns, as an int64, a non-negative pseudo-random number in the half-open interval [0,n) from the default [Source]. It panics if n <= 0.
math/rand/rand.go:454
func Intn(n int) int
Intn returns, as an int, a non-negative pseudo-random number in the half-open interval [0,n) from the default [Source]. It panics if n <= 0.
math/rand/rand.go:464
func New(src Source) *Rand
New returns a new [Rand] that uses random values from src to generate other random values.
math/rand/rand.go:78
func NewSource(seed int64) Source
NewSource returns a new pseudo-random [Source] seeded with the given value. Unlike the default [Source] used by top-level functions, this source is not safe for concurrent use by multiple goroutines. The returned [Source] implements [Source64].
math/rand/rand.go:51
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.
math/rand/zipf.go:39
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
math/rand/rand.go:499
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].
math/rand/rand.go:476
func Read(p []byte) (int, error)
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. Deprecated: For almost all use cases, [crypto/rand.Read] is more appropriate. If a deterministic source is required, use [math/rand/v2.ChaCha8.Read].
math/rand/rand.go:489
func Seed(seed int64)
Seed uses the provided seed value to initialize the default Source to a deterministic state. Seed values that have the same remainder when divided by 2³¹-1 generate the same pseudo-random sequence. Seed, unlike the [Rand.Seed] method, is safe for concurrent use. If Seed is not called, the generator is seeded randomly at program startup. Prior to Go 1.20, the generator was seeded like Seed(1) at program startup. To force the old behavior, call Seed(1) at program startup. Alternately, set G...
math/rand/rand.go:400
func Shuffle(n int, swap func(...))
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.
math/rand/rand.go:481
func Uint32() uint32
Uint32 returns a pseudo-random 32-bit value as a uint32 from the default [Source].
math/rand/rand.go:438
func Uint64() uint64
Uint64 returns a pseudo-random 64-bit value as a uint64 from the default [Source].
math/rand/rand.go:442
Types
type Rand struct {
// contains filtered or unexported fields
}A Rand is a source of random numbers.
math/rand/rand.go:62
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
math/rand/exp.go:30
func (r *Rand) Float32() float32
Float32 returns, as a float32, a pseudo-random number in the half-open interval [0.0,1.0).
math/rand/rand.go:215
func (r *Rand) Float64() float64
Float64 returns, as a float64, a pseudo-random number in the half-open interval [0.0,1.0).
math/rand/rand.go:189
func (r *Rand) Int() int
Int returns a non-negative pseudo-random int.
math/rand/rand.go:113
func (r *Rand) Int31() int32
Int31 returns a non-negative pseudo-random 31-bit integer as an int32.
math/rand/rand.go:110
func (r *Rand) Int31n(n int32) int32
Int31n returns, as an int32, a non-negative pseudo-random number in the half-open interval [0,n). It panics if n <= 0.
math/rand/rand.go:137
func (r *Rand) Int63() int64
Int63 returns a non-negative pseudo-random 63-bit integer as an int64.
math/rand/rand.go:96
func (r *Rand) Int63n(n int64) int64
Int63n returns, as an int64, a non-negative pseudo-random number in the half-open interval [0,n). It panics if n <= 0.
math/rand/rand.go:120
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.
math/rand/rand.go:178
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
math/rand/normal.go:37
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).
math/rand/rand.go:229
func (r *Rand) Read(p []byte) (int, error)
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.
math/rand/rand.go:272
func (r *Rand) Seed(seed int64)
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.
math/rand/rand.go:85
func (r *Rand) Shuffle(n int, swap func(...))
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.
math/rand/rand.go:247
func (r *Rand) Uint32() uint32
Uint32 returns a pseudo-random 32-bit value as a uint32.
math/rand/rand.go:99
func (r *Rand) Uint64() uint64
Uint64 returns a pseudo-random 64-bit value as a uint64.
math/rand/rand.go:102
type Source interface {
Int63() int64
Seed(seed int64)
}A Source represents a source of uniformly-distributed pseudo-random int64 values in the range [0, 1<<63). A Source is not safe for concurrent use by multiple goroutines.
math/rand/rand.go:31
type Source64 interface {
Source
Uint64() uint64
}A Source64 is a [Source] that can also generate uniformly-distributed pseudo-random uint64 values in the range [0, 1<<64) directly. If a [Rand] r's underlying [Source] s implements Source64, then r.Uint64 returns the result of one call to s.Uint64 instead of making two calls to s.Int63.
math/rand/rand.go:42
type Zipf struct {
// contains filtered or unexported fields
}A Zipf generates Zipf distributed variates.
math/rand/zipf.go:15
func (z *Zipf) Uint64() uint64
Uint64 returns a value drawn from the [Zipf] distribution described by the [Zipf] object.
math/rand/zipf.go:58