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