C API для random
Доступ к различным распределениям ниже доступен через Cython или библиотеки-обертки C,
такие как CFFI. Все функции принимают bitgen_t в качестве
первого аргумента. Для доступа к ним из Cython или C необходимо линковаться с
npyrandom статическая библиотека, которая является частью дистрибутива NumPy, расположена
в numpy/random/lib. Обратите внимание, что вы должны также связать с npymath, см. Связывание с основной математической библиотекой в расширении.
-
тип bitgen_t
The bitgen_t хранит текущее состояние генератора битов и указатели на функции, которые возвращают стандартные типы C, продвигая состояние.
struct bitgen:
void *state
npy_uint64 (*next_uint64)(void *st) nogil
uint32_t (*next_uint32)(void *st) nogil
double (*next_double)(void *st) nogil
npy_uint64 (*next_raw)(void *st) nogil
ctypedef bitgen bitgen_t
См. Расширение для примеров использования этих функций.
Функции названы по следующим соглашениям:
«стандартный» относится к эталонным значениям для любых параметров. Например, «standard_uniform» означает равномерное распределение на интервале 0.0 to
1.0
функции 'fill' заполнят предоставленный out с cnt значения.
Функции без слова "standard" в названии требуют дополнительных параметров для описания распределений.
Функции с inv в их названии основаны на более медленном обратном методе вместо алгоритма поиска зиккурата, который значительно быстрее. Варианты без зиккурата используются в крайних случаях и для обратной совместимости.
-
double random_standard_uniform(bitgen_t *bitgen_state)
-
void random_standard_uniform_fill(bitgen_t *bitgen_state, npy_intp cnt, double *выход)
-
double random_standard_exponential(bitgen_t *bitgen_state)
-
void random_standard_exponential_fill(bitgen_t *bitgen_state, npy_intp cnt, double *выход)
-
void random_standard_exponential_inv_fill(bitgen_t *bitgen_state, npy_intp cnt, double *выход)
-
double random_standard_normal(bitgen_t *bitgen_state)
-
void random_standard_normal_fill(bitgen_t *bitgen_state, npy_intp count, double *выход)
-
void random_standard_normal_fill_f(bitgen_t *bitgen_state, npy_intp count, float *выход)
-
double random_standard_gamma(bitgen_t *bitgen_state, double shape)
-
float random_standard_uniform_f(bitgen_t *bitgen_state)
-
void random_standard_uniform_fill_f(bitgen_t *bitgen_state, npy_intp cnt, float *выход)
-
float random_standard_exponential_f(bitgen_t *bitgen_state)
-
void random_standard_exponential_fill_f(bitgen_t *bitgen_state, npy_intp cnt, float *выход)
-
void random_standard_exponential_inv_fill_f(bitgen_t *bitgen_state, npy_intp cnt, float *выход)
-
float random_standard_normal_f(bitgen_t *bitgen_state)
-
float random_standard_gamma_f(bitgen_t *bitgen_state, float shape)
-
double random_normal(bitgen_t *bitgen_state, double loc, double scale)
-
double random_gamma(bitgen_t *bitgen_state, double shape, double scale)
-
float random_gamma_f(bitgen_t *bitgen_state, float shape, float scale)
-
double random_exponential(bitgen_t *bitgen_state, double scale)
-
double random_uniform(bitgen_t *bitgen_state, double lower, double range)
-
double случайное_бета(bitgen_t *bitgen_state, double a, double b)
-
double random_chisquare(bitgen_t *bitgen_state, double df)
-
double random_f(bitgen_t *bitgen_state, double dfnum, double dfden)
-
double random_standard_cauchy(bitgen_t *bitgen_state)
-
double random_pareto(bitgen_t *bitgen_state, double a)
-
double random_weibull(bitgen_t *bitgen_state, double a)
-
double random_power(bitgen_t *bitgen_state, double a)
-
double random_laplace(bitgen_t *bitgen_state, double loc, double scale)
-
double random_gumbel(bitgen_t *bitgen_state, double loc, double scale)
-
double random_logistic(bitgen_t *bitgen_state, double loc, double scale)
-
double random_lognormal(bitgen_t *bitgen_state, double mean, double sigma)
-
double random_rayleigh(bitgen_t *bitgen_state, double mode)
-
double random_standard_t(bitgen_t *bitgen_state, double df)
-
double random_noncentral_chisquare(bitgen_t *bitgen_state, double df, double nonc)
-
double random_noncentral_f(bitgen_t *bitgen_state, double dfnum, double dfden, double nonc)
-
double random_wald(bitgen_t *bitgen_state, double mean, double scale)
-
double random_vonmises(bitgen_t *bitgen_state, double mu, double kappa)
-
double random_triangular(bitgen_t *bitgen_state, double left, double mode, double правый)
-
npy_int64 random_poisson(bitgen_t *bitgen_state, double lam)
-
npy_int64 random_negative_binomial(bitgen_t *bitgen_state, double n, double p)
-
тип binomial_t
typedef struct s_binomial_t {
int has_binomial; /* !=0: following parameters initialized for binomial */
double psave;
RAND_INT_TYPE nsave;
double r;
double q;
double fm;
RAND_INT_TYPE m;
double p1;
double xm;
double xl;
double xr;
double c;
double laml;
double lamr;
double p2;
double p3;
double p4;
} binomial_t;
-
npy_int64 random_binomial(bitgen_t *bitgen_state, double p, npy_int64 n, binomial_t *биномиальный)
-
npy_int64 random_logseries(bitgen_t *bitgen_state, double p)
-
npy_int64 random_geometric_search(bitgen_t *bitgen_state, double p)
-
npy_int64 random_geometric_inversion(bitgen_t *bitgen_state, double p)
-
npy_int64 random_geometric(bitgen_t *bitgen_state, double p)
-
npy_int64 random_zipf(bitgen_t *bitgen_state, double a)
-
npy_int64 random_hypergeometric(bitgen_t *bitgen_state, npy_int64 хорошо, npy_int64 плохой, npy_int64 sample)
-
npy_uint64 random_interval(bitgen_t *bitgen_state, npy_uint64 max)
-
void random_multinomial(bitgen_t *bitgen_state, npy_int64 n, npy_int64 *mnix, double *pix, npy_intp d, binomial_t *биномиальный)
-
int random_multivariate_hypergeometric_count(bitgen_t *bitgen_state, npy_int64 total, size_t num_colors, npy_int64 *цвета, npy_int64 nsample, size_t num_variates, npy_int64 *вариаты)
-
void random_multivariate_hypergeometric_marginals(bitgen_t *bitgen_state, npy_int64 total, size_t num_colors, npy_int64 *цвета, npy_int64 nsample, size_t num_variates, npy_int64 *вариаты)
Сгенерировать одно целое число
-
npy_int64 random_positive_int64(bitgen_t *bitgen_state)
-
npy_int32 random_positive_int32(bitgen_t *bitgen_state)
-
npy_int64 random_positive_int(bitgen_t *bitgen_state)
-
npy_uint64 random_uint(bitgen_t *bitgen_state)
определено более 60 универсальных функций
-
npy_uint64 random_bounded_uint64(bitgen_t *bitgen_state, npy_uint64 выключен, npy_uint64 rng, npy_uint64 маска, bool use_masked)