utilities

Utilities to Support Random Operations and Generating Vectors and Matrices

quantecon.random.utilities.draw[source]

Generate a random sample according to the cumulative distribution given by cdf. Jit-complied by Numba in nopython mode.

Parameters:
cdf : array_like(float, ndim=1)

Array containing the cumulative distribution.

size : scalar(int), optional(default=None)

Size of the sample. If an integer is supplied, an ndarray of size independent draws is returned; otherwise, a single draw is returned as a scalar.

Returns:
scalar(int) or ndarray(int, ndim=1)

Examples

>>> cdf = np.cumsum([0.4, 0.6])
>>> qe.random.draw(cdf)
1
>>> qe.random.draw(cdf, 10)
array([1, 0, 1, 0, 1, 0, 0, 0, 1, 0])
quantecon.random.utilities.probvec(m, k, random_state=None, parallel=True)[source]

Return m randomly sampled probability vectors of dimension k.

Parameters:
m : scalar(int)

Number of probability vectors.

k : scalar(int)

Dimension of each probability vectors.

random_state : int or np.random.RandomState, optional

Random seed (integer) or np.random.RandomState instance to set the initial state of the random number generator for reproducibility. If None, a randomly initialized RandomState is used.

parallel : bool(default=True)

Whether to use multi-core CPU (parallel=True) or single-threaded CPU (parallel=False). (Internally the code is executed through Numba.guvectorize.)

Returns:
x : ndarray(float, ndim=2)

Array of shape (m, k) containing probability vectors as rows.

Examples

>>> qe.random.probvec(2, 3, random_state=1234)
array([[ 0.19151945,  0.43058932,  0.37789123],
       [ 0.43772774,  0.34763084,  0.21464142]])
quantecon.random.utilities.sample_without_replacement[source]

Randomly choose k integers without replacement from 0, …, n-1.

Parameters:
n : scalar(int)

Number of integers, 0, …, n-1, to sample from.

k : scalar(int)

Number of integers to sample.

num_trials : scalar(int), optional(default=None)

Number of trials.

random_state : int or np.random.RandomState, optional

Random seed (integer) or np.random.RandomState instance to set the initial state of the random number generator for reproducibility. If None, a randomly initialized RandomState is used.

Returns:
result : ndarray(int, ndim=1 or 2)

Array of shape (k,) if num_trials is None, or of shape (num_trials, k) otherwise, (each row of) which contains k unique random elements chosen from 0, …, n-1.

Examples

>>> qe.random.sample_without_replacement(5, 3, random_state=1234)
array([0, 2, 1])
>>> qe.random.sample_without_replacement(5, 3, num_trials=4,
...                                      random_state=1234)
array([[0, 2, 1],
       [3, 4, 0],
       [1, 3, 2],
       [4, 1, 3]])