Class Random

Nested Relationships

Nested Types

Class Documentation

class Random

rand_distributions.h

Purpose: Static class for getting randomly created objects from different distributions and of different types.

Copyright (C) 2018 Zayd Hammoudeh. All rights reserved.

Author
Zayd Hammoudeh zayd@ucsc.edu
Version
0.00.00

This software may be modified and distributed under the terms of the MIT license. See the LICENSE file for details.

Unnamed Group

template <typename T>
static T uniform(T min, T max)

Generates a uniform random integer in the range [min, max].

Return
Uniform random integer across the full range of possible values.
Parameters
  • min: Minimum value that can be generated inclusive.
  • max: Maximum value that can be generated inclusively.

static int uniform(int min = INT_MIN, int max = INT_MAX)

Special int uniform random generator that can optionally avoid reinitialize the uniform int distribution generator.

Public Static Functions

static void init(SolverConfiguration *config)

Random State Initializer

Creates the random state of the program. It also seeds the random number generator.

Parameters
  • config: Solver configuration

static SampleSize binom(SampleSize n, double p)

Creates a random variable sampled from the distribution Binom(n,p)

Return
Integer random variable generated according to the binomial distribution.
Parameters
  • n: Number of Bernoulli trials in the binomial distribution
  • p: Probability of success.

template <typename ListType, typename CountType>
static void DownsampleList(CountType target_size, std::vector<ListType> &oversampled_vec, bool resize = true)

Using a modified version of the Fisher-Yates shuffle, the first target_size elements of the vector oversampled_vec will be selected uniformly at random. All modifications are done inplace. The running time is O(target_size).

Template Parameters
  • ListType: Type of the object in the oversampled vector.
  • CountType: Type of object used to store the counts.
Parameters
  • oversampled_vec: Vector with more elements than desired. target_size elements will be selected in the first [0, target_size) elements.
  • target_size: Number of objects to select in oversampled_vec
  • resize: True to resize oversampled_vec to the size target_count.

template <typename T>
static void shuffle(std::vector<T> &vec)

Shuffles the specified vector in place uniformly at random.

Template Parameters
  • T: Vector element type
Parameters
  • vec: Vector to be shuffled.

static void SelectRangeInts(SampleSize max_id, SampleSize num_elements, std::vector<SampleSize> &samples_to_replace)

Builds a randomly selected list of integers in the range [0, max_id).

This is performed WITHOUT replacement. Its running time is Theta(max_id)

Parameters
  • max_id: Maximum value (exclusive) that any integer in the range can be.
  • num_elements: Number of elements to be selected
  • samples_to_replace: List of p num_elements randomly selected integers in the range [0, max_id).

template <typename T>
static void shuffle(typename std::vector<T>::iterator begin, typename std::vector<T>::iterator end)

Shuffles a vector using the standad random device.

Template Parameters
  • T: Type contained in the vector
Parameters
  • begin: Beginning of the vector to shuffle (inclusive)
  • end: End of the vector to shuffle (exclusive)

class Mpz

Public Static Functions

static void uniform(mpz_class max_z, mpz_class &rand_val)

Generates and returns a random multiprecision integer. This may be used by other classes to consolidate the random MP generation.

Parameters
  • max_z: Maximum integer value. All generated random values will be in the range [0, max_z).
  • rand_val: Output value where the generated random number will be stored.

static SampleSize binom(SampleSize n, const mpz_class &t, const mpz_class &a)

Selects a binomially distributed random variable from Binom(n, a/t).

It may an approximate or exact version of the distribution depending on the state of the variable Random::Mpz::use_approx_binom_.

Return
Integer random variable generated according to the binomial distribution.
Parameters
  • n: Number of Bernoulli trials in the binomial distribution
  • t: Total weight of all samples
  • a: Weight of success.