mpyc.random
index
github.com/lschoe/mpyc/blob/v0.10/mpyc/random.py

This module provides secure versions of several functions for
generating pseudorandom numbers, cf. the random module of Python's
standard library. Each function behaves like its Python counterpart,
except that a secure type is required as additional (first) argument.
 
Additionally, random_unit_vector() generates a random bit vector
with exactly one bit set to 1, using approximately log_2 n secure
random bits for a bit vector of length n.
 
Also, random_permutation() and random_derangement() are provided as
convenience functions.
 
Main concern for the implementations is to minimize the randomness
complexity, that is, to limit the usage of secure random bits as
provided by runtime.random_bits(). Other than this, the code is
relatively simple for now.
 
NB: runtime._random(sectype, n) cannot be used as an alternative to
_randbelow(sectype, n) as its output is not uniformly random, except
when n is equal to the order of sectype's finite field.

 
Modules
       
mpyc.asyncoro
itertools
math
mpyc.sectypes

 
Functions
       
choice(sectype, seq)
Uniformly random secret element chosen from seq.
 
Given seq may contain public and/or secret elements.
 
If seq is empty, raises IndexError.
choices(sectype, population, weights=None, *, cum_weights=None, k=1)
List of k uniformly random secret elements chosen from population.
 
Choices are made with replacement.
 
Given population may contain public and/or secret elements.
 
If the relative weights or cumulative weights are not specified,
the choices are made with equal probability.
getrandbits(sectype, k, bits=False)
Uniformly random nonnegative k-bit integer value.
 
Return bits (instead of number) if requested.
randint(sectype, a, b)
Uniformly random secret integer between a and b, incl. both endpoints.
random(sectype)
Uniformly random secret fixed-point number in the range [0.0, 1.0).
random_derangement(sectype, x)
Uniformly random derangement of given sequence x or range(x).
 
A derangement is a permutation without fixed points.
random_permutation(sectype, x)
Uniformly random permutation of given sequence x or range(x).
random_unit_vector(sectype, n)
Uniformly random secret rotation of [1] + [0]*(n-1).
 
Expected number of secret random bits needed is ceil(log_2 n) + c,
with c a small constant, c < 3.
randrange(sectype, start, stop=None, step=1)
Uniformly random secret integer in range(start, stop[, step]).
sample(sectype, population, k)
List of k uniformly random secret elements chosen from population.
 
Choices are made without replacement.
 
Given population may contain public and/or secret elements.
 
If the population contains repeats, then each occurrence is a
possible selection in the sample.
 
To choose a sample in a range of integers, use range as an argument.
This is especially fast and space efficient for sampling from a
large population, e.g.: sample(sectype, range(10000000), 60).
shuffle(sectype, x)
Shuffle list x secretly in-place, and return None.
 
Given list x may contain public or secret elements.
Elements of x are all numbers or all lists (of the same length) of numbers.
uniform(sectype, a, b)
Uniformly random secret fixed-point number N such that
a <= N <= b for a <= b and b <= N <= a for b < a.

 
Data
        runtime = None