|
- # Copyright (c) Microsoft Corporation.
- # Licensed under the MIT license.
-
- '''
- parameter_expression.py
- '''
-
- import numpy as np
-
-
- def choice(options, random_state):
- '''
- options: 1-D array-like or int
- random_state: an object of numpy.random.RandomState
- '''
- return random_state.choice(options)
-
-
- def randint(lower, upper, random_state):
- '''
- Generate a random integer from `lower` (inclusive) to `upper` (exclusive).
- lower: an int that represent an lower bound
- upper: an int that represent an upper bound
- random_state: an object of numpy.random.RandomState
- '''
- return random_state.randint(lower, upper)
-
-
- def uniform(low, high, random_state):
- '''
- low: an float that represent an lower bound
- high: an float that represent an upper bound
- random_state: an object of numpy.random.RandomState
- '''
- assert high >= low, 'Upper bound must be larger than lower bound'
- return random_state.uniform(low, high)
-
-
- def quniform(low, high, q, random_state):
- '''
- low: an float that represent an lower bound
- high: an float that represent an upper bound
- q: sample step
- random_state: an object of numpy.random.RandomState
- '''
- return np.clip(np.round(uniform(low, high, random_state) / q) * q, low, high)
-
-
- def loguniform(low, high, random_state):
- '''
- low: an float that represent an lower bound
- high: an float that represent an upper bound
- random_state: an object of numpy.random.RandomState
- '''
- assert low > 0, 'Lower bound must be positive'
- return np.exp(uniform(np.log(low), np.log(high), random_state))
-
-
- def qloguniform(low, high, q, random_state):
- '''
- low: an float that represent an lower bound
- high: an float that represent an upper bound
- q: sample step
- random_state: an object of numpy.random.RandomState
- '''
- return np.clip(np.round(loguniform(low, high, random_state) / q) * q, low, high)
-
-
- def normal(mu, sigma, random_state):
- '''
- The probability density function of the normal distribution,
- first derived by De Moivre and 200 years later by both Gauss and Laplace independently.
- mu: float or array_like of floats
- Mean (“centre”) of the distribution.
- sigma: float or array_like of floats
- Standard deviation (spread or “width”) of the distribution.
- random_state: an object of numpy.random.RandomState
- '''
- return random_state.normal(mu, sigma)
-
-
- def qnormal(mu, sigma, q, random_state):
- '''
- mu: float or array_like of floats
- sigma: float or array_like of floats
- q: sample step
- random_state: an object of numpy.random.RandomState
- '''
- return np.round(normal(mu, sigma, random_state) / q) * q
-
-
- def lognormal(mu, sigma, random_state):
- '''
- mu: float or array_like of floats
- sigma: float or array_like of floats
- random_state: an object of numpy.random.RandomState
- '''
- return np.exp(normal(mu, sigma, random_state))
-
-
- def qlognormal(mu, sigma, q, random_state):
- '''
- mu: float or array_like of floats
- sigma: float or array_like of floats
- q: sample step
- random_state: an object of numpy.random.RandomState
- '''
- return np.round(lognormal(mu, sigma, random_state) / q) * q
|