pcg

package
v0.0.0-...-b1ce7bc Latest Latest
Warning

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

Go to latest
Published: Feb 3, 2024 License: Apache-2.0 Imports: 3 Imported by: 0

Documentation

Overview

Package pcg implements a 32 bit PRNG with a 64 bit period: pcg xsh rr 64 32. See https://www.pcg-random.org/ for more information. This implementation is geared specifically towards go-fuzz's needs: Simple creation and use, no reproducibility, no concurrency safety, just the methods go-fuzz needs, optimized for speed.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Rand

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

Rand is a PRNG. It should not be copied or shared. No Rand methods are concurrency safe. They are small, and cheap to create. If in doubt: Just make another one.

func New

func New() *Rand

New generates a new, seeded Rand, ready for use.

func (*Rand) Bool

func (r *Rand) Bool() bool

Bool generates a random bool.

func (*Rand) Exp2

func (r *Rand) Exp2() int

Exp2 generates n with probability 1/2^(n+1).

func (*Rand) Intn

func (r *Rand) Intn(n int) int

Intn returns a pseudo-random number in [0, n). n must fit in a uint32.

func (*Rand) Uint32

func (r *Rand) Uint32() uint32

Uint32 returns a pseudo-random uint32.

func (*Rand) Uint32n

func (r *Rand) Uint32n(n uint32) uint32

Uint32n returns a pseudo-random number in [0, n).

For implementation details, see: https://lemire.me/blog/2016/06/27/a-fast-alternative-to-the-modulo-reduction https://lemire.me/blog/2016/06/30/fast-random-shuffling

Jump to

Keyboard shortcuts

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