clrand

package
v0.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 6, 2021 License: MIT Imports: 7 Imported by: 0

Documentation

Overview

Package clrand implements CPU-local random number generators. These may be used simultaneously by many goroutines without significant cache contention.

This package is based on golang.org/x/exp/rand and uses the PCG generator from that package. This package also provides a rand.Source to be used with that package.

An important difference between the random number generators in this package and the ones provided by golang.org/x/exp/rand (and math/rand) is that they are deterministic whereas the generators in this package are not: even when starting from the same initial seed, Sources from this package return sequences of values that vary from run to run. For this reason, there is no top-level Seed function, and all Sources (including the global Source used by the package functions Int, Intn, and so on) are randomly seeded when they are created.

Index

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). 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).

func Float64

func Float64() float64

Float64 returns, as a float64, a pseudo-random number in [0.0,1.0).

func Int

func Int() int

Int returns a non-negative pseudo-random int.

func Int31

func Int31() int32

Int31 returns a non-negative pseudo-random 31-bit integer as an int32.

func Int31n

func Int31n(n int32) int32

Int31n returns, as an int32, a non-negative pseudo-random number in [0,n). It panics if n <= 0.

func Int63

func Int63() int64

Int63 returns a non-negative pseudo-random 63-bit integer as an int64.

func Int63n

func Int63n(n int64) int64

Int63n returns, as an int64, a non-negative pseudo-random number in [0,n). It panics if n <= 0.

func Intn

func Intn(n int) int

Intn returns, as an int, a non-negative pseudo-random number in [0,n). 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). To produce a different normal distribution, callers can adjust the output using:

sample = NormFloat64() * desiredStdDev + desiredMean

func Perm

func Perm(n int) []int

Perm returns, as a slice of n ints, a pseudo-random permutation of the integers [0,n).

func Read

func Read(p []byte) (n int, err error)

Read generates len(p) random bytes and writes them into p. It always returns len(p) and a nil error.

func Shuffle

func 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 Uint32

func Uint32() uint32

Uint32 returns a pseudo-random 32-bit value as a uint32.

func Uint64

func Uint64() uint64

Uint64 returns a pseudo-random 64-bit integer as a uint64.

Types

type Source

type Source struct {
	// contains filtered or unexported fields
}

A Source is a source of uniformly-distributed pseudo-random uint64 values in the range [0, 1<<64). It implements golang.org/x/exp/rand.Source.

By design, Source is not deterministic: even starting with the same initial state, it does not generate the same values from run to run. Therefore, a Source is always created with a randomized seed and Source.Seed is a no-op.

func NewSource

func NewSource() *Source

NewSource creates a Source with a randomized seed.

func (*Source) Seed

func (s *Source) Seed(uint64)

Seed is a no-op. It is only defined for compatibility with the rand.Source interface.

func (*Source) Uint64

func (s *Source) Uint64() uint64

Uint64 returns a pseudo-random 64-bit integer as a uint64.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL