# 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. 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.) 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. 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]])