rand

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: May 5, 2026 License: BSD-3-Clause Imports: 4 Imported by: 0

Documentation

Overview

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 thread at a time: sharing among multiple threads requires some kind of synchronization.

Top-level functions, such as Float64 and IntN, use a global Rand with a PCG source seeded by runtime.Seed.

This package's outputs might be easily predictable regardless of how it's seeded. For random numbers suitable for security-sensitive work, see the crypto/crand package.

Based on the math/rand/v2 package.

Index

Constants

This section is empty.

Variables

View Source
var ErrUnmarshalPCG = errors.New("rand: invalid PCG encoding")

Functions

func Float32

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

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

func Int() int

Int returns a non-negative pseudo-random int from the default Source.

func Int32

func Int32() int32

Int32 returns a non-negative pseudo-random 31-bit integer as an int32 from the default Source.

func Int32N

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

func Int64() int64

Int64 returns a non-negative pseudo-random 63-bit integer as an int64 from the default Source.

func Int64N

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

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.

func Uint

func Uint() uint

Uint returns a pseudo-random uint from the default Source.

func Uint32

func Uint32() uint32

Uint32 returns a pseudo-random 32-bit value as a uint32 from the default Source.

func Uint32N

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

func Uint64() uint64

Uint64 returns a pseudo-random 64-bit value as a uint64 from the default Source.

func Uint64N

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

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.

Types

type PCG

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

A PCG is a PCG generator with 128 bits of internal state. A zero PCG is equivalent to NewPCG(0, 0).

func NewPCG

func NewPCG(seed1, seed2 uint64) PCG

NewPCG returns a new PCG seeded with the given values.

func (*PCG) AppendBinary

func (p *PCG) AppendBinary(b []byte) ([]byte, error)

AppendBinary implements the encoding.BinaryAppender interface. Requires at least 20 bytes of spare capacity in b.

func (*PCG) MarshalBinary

func (p *PCG) MarshalBinary(b []byte) ([]byte, error)

MarshalBinary implements the encoding.BinaryMarshaler interface. Requires a 20-byte buffer in b.

func (*PCG) Seed

func (p *PCG) Seed(seed1, seed2 uint64)

Seed resets the PCG to behave the same way as NewPCG(seed1, seed2).

func (*PCG) Uint64

func (p *PCG) Uint64() uint64

Uint64 return a uniformly-distributed random uint64 value.

func (*PCG) UnmarshalBinary

func (p *PCG) UnmarshalBinary(data []byte) error

UnmarshalBinary implements the encoding.BinaryUnmarshaler interface.

type Rand

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

A Rand is a source of random numbers.

func New

func New(src Source) Rand

New returns a new Rand that uses random values from src to generate other random values.

func (*Rand) Float32

func (r *Rand) Float32() float32

Float32 returns, as a float32, a pseudo-random number in the half-open interval [0.0,1.0).

func (*Rand) Float64

func (r *Rand) Float64() float64

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

func (*Rand) Int

func (r *Rand) Int() int

Int returns a non-negative pseudo-random int.

func (*Rand) Int32

func (r *Rand) Int32() int32

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

func (*Rand) Int32N

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 (*Rand) Int64

func (r *Rand) Int64() int64

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

func (*Rand) Int64N

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 (*Rand) IntN

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 (*Rand) Uint

func (r *Rand) Uint() uint

Uint returns a pseudo-random uint.

func (*Rand) Uint32

func (r *Rand) Uint32() uint32

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

func (*Rand) Uint32N

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 (*Rand) Uint64

func (r *Rand) Uint64() uint64

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

func (*Rand) Uint64N

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 (*Rand) UintN

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.

type Source

type Source interface {
	Uint64() uint64
}

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

Jump to

Keyboard shortcuts

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