csprng

package
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Apr 1, 2024 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Overview

Package csprng implements various samplers used throughout TFHE. All samplers in this package are CSPRNG(Cryptographically Secure Pseudo Random Generator), hence the name.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BinarySampler

type BinarySampler[T num.Integer] struct {
	// contains filtered or unexported fields
}

BinarySampler samples values from uniform and block binary distribution.

func NewBinarySampler

func NewBinarySampler[T num.Integer]() BinarySampler[T]

NewBinarySampler allocates an empty BinarySampler.

Panics when read from crypto/rand or blake2b initialization fails.

func NewBinarySamplerWithSeed

func NewBinarySamplerWithSeed[T num.Integer](seed []byte) BinarySampler[T]

NewBinarySamplerWithSeed allocates an empty BinarySampler, with user supplied seed.

Panics when blake2b initialization fails.

func (BinarySampler[T]) Sample

func (s BinarySampler[T]) Sample() T

Sample uniformly samples a random binary integer.

func (BinarySampler[T]) SampleBlockSliceAssign added in v0.3.0

func (s BinarySampler[T]) SampleBlockSliceAssign(blockSize int, v []T)

SampleBlockSliceAssign samples block binary values to v.

func (BinarySampler[T]) SampleSliceAssign

func (s BinarySampler[T]) SampleSliceAssign(v []T)

SampleSliceAssign samples uniform binary values to v.

type GaussianSampler

type GaussianSampler[T num.Integer] struct {
	// contains filtered or unexported fields
}

GaussianSampler samples from Rounded Gaussian Distribution, centered around zero. This uses the same algorithm as Go's standard library, which is based on Ziggurat method by Marsaglia and Tsang.

func NewGaussianSampler

func NewGaussianSampler[T num.Integer]() GaussianSampler[T]

NewGaussianSampler allocates an empty GaussianSampler.

Panics when read from crypto/rand or blake2b initialization fails, or StdDev <= 0.

func NewGaussianSamplerWithSeed

func NewGaussianSamplerWithSeed[T num.Integer](seed []byte, stdDev float64) GaussianSampler[T]

NewGaussianSamplerWithSeed allocates an empty GaussianSampler, with user supplied seed.

Panics when blake2b initialization fails or StdDev <= 0.

func (GaussianSampler[T]) Sample

func (s GaussianSampler[T]) Sample(stdDev float64) T

Sample returns a number sampled from rounded gaussian distribution with standard deviation |stdDev|.

func (GaussianSampler[T]) SampleSliceAddAssign

func (s GaussianSampler[T]) SampleSliceAddAssign(stdDev float64, vOut []T)

SampleSliceAddAssign samples rounded gaussian values with standard deviation |stdDev|, and adds to vOut.

func (GaussianSampler[T]) SampleSliceAssign

func (s GaussianSampler[T]) SampleSliceAssign(stdDev float64, vOut []T)

SampleSliceAssign samples rounded gaussian values with standard deviation |stdDev|, and writes it to vOut.

type UniformSampler

type UniformSampler[T num.Integer] struct {
	// contains filtered or unexported fields
}

UniformSampler samples values from uniform distribution. This uses blake2b as a underlying prng.

func NewUniformSampler

func NewUniformSampler[T num.Integer]() UniformSampler[T]

NewUniformSampler allocates an empty UniformSampler.

Panics when read from crypto/rand or blake2b initialization fails.

func NewUniformSamplerWithSeed

func NewUniformSamplerWithSeed[T num.Integer](seed []byte) UniformSampler[T]

NewUniformSamplerWithSeed allocates an empty UniformSampler, with user supplied seed.

Panics when blake2b initialization fails.

func (UniformSampler[T]) Sample

func (s UniformSampler[T]) Sample() T

Sample uniformly samples a random integer of type T.

func (UniformSampler[T]) SampleN

func (s UniformSampler[T]) SampleN(N T) T

SampleN uniformly samples a random integer of type T in [0, N).

func (UniformSampler[T]) SampleSliceAssign

func (s UniformSampler[T]) SampleSliceAssign(v []T)

SampleSliceAssign samples uniform values to v.

Jump to

Keyboard shortcuts

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