rnd

package module
v0.0.0-...-d0033f7 Latest Latest
Warning

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

Go to latest
Published: Feb 19, 2022 License: Apache-2.0 Imports: 4 Imported by: 0

README

Go Reference

Package rnd provides a pre-seeded PRNG. See the package docs for details.

Documentation

Overview

Package rnd provides a pre-seeded PRNG.

It is meant for cases where a library wants to guarantee non-deterministic behavior. In that case, the API of math/rand provides several challenges:

  1. *rand.Rand is not concurrency safe, so you need to wrap it into a mutex or use a sync.Pool. Locking is less efficient, as it holds the mutex for longer than required. sync.Pool means random number generation might allocate.
  2. The default source (used by the top-level function) is concurrency safe, but not seeded. A library can not assume its user remembered to properly seed it. It can also not be sure a different library did not seed it with a bad seed (e.g. many people use the current time).

This package works around that by using a concurrency safe and properly seeded shared source and not allowing to seed it manually.

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[T any](s []T)

Shuffle pseudo-randomizes the order of elements of s.

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 value as a uint64.

Types

This section is empty.

Jump to

Keyboard shortcuts

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