All packages

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