File indexing completed on 2025-02-21 10:03:52
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 #ifndef __GSL_RANDIST_H__
0021 #define __GSL_RANDIST_H__
0022 #include <gsl/gsl_rng.h>
0023 #include <gsl/gsl_vector.h>
0024 #include <gsl/gsl_matrix.h>
0025
0026 #undef __BEGIN_DECLS
0027 #undef __END_DECLS
0028 #ifdef __cplusplus
0029 # define __BEGIN_DECLS extern "C" {
0030 # define __END_DECLS }
0031 #else
0032 # define __BEGIN_DECLS
0033 # define __END_DECLS
0034 #endif
0035
0036 __BEGIN_DECLS
0037
0038 unsigned int gsl_ran_bernoulli (const gsl_rng * r, double p);
0039 double gsl_ran_bernoulli_pdf (const unsigned int k, double p);
0040
0041 double gsl_ran_beta (const gsl_rng * r, const double a, const double b);
0042 double gsl_ran_beta_pdf (const double x, const double a, const double b);
0043
0044 unsigned int gsl_ran_binomial (const gsl_rng * r, double p, unsigned int n);
0045 unsigned int gsl_ran_binomial_knuth (const gsl_rng * r, double p, unsigned int n);
0046 unsigned int gsl_ran_binomial_tpe (const gsl_rng * r, double p, unsigned int n);
0047 double gsl_ran_binomial_pdf (const unsigned int k, const double p, const unsigned int n);
0048
0049 double gsl_ran_exponential (const gsl_rng * r, const double mu);
0050 double gsl_ran_exponential_pdf (const double x, const double mu);
0051
0052 double gsl_ran_exppow (const gsl_rng * r, const double a, const double b);
0053 double gsl_ran_exppow_pdf (const double x, const double a, const double b);
0054
0055 double gsl_ran_cauchy (const gsl_rng * r, const double a);
0056 double gsl_ran_cauchy_pdf (const double x, const double a);
0057
0058 double gsl_ran_chisq (const gsl_rng * r, const double nu);
0059 double gsl_ran_chisq_pdf (const double x, const double nu);
0060
0061 void gsl_ran_dirichlet (const gsl_rng * r, const size_t K, const double alpha[], double theta[]);
0062 double gsl_ran_dirichlet_pdf (const size_t K, const double alpha[], const double theta[]);
0063 double gsl_ran_dirichlet_lnpdf (const size_t K, const double alpha[], const double theta[]);
0064
0065 double gsl_ran_erlang (const gsl_rng * r, const double a, const double n);
0066 double gsl_ran_erlang_pdf (const double x, const double a, const double n);
0067
0068 double gsl_ran_fdist (const gsl_rng * r, const double nu1, const double nu2);
0069 double gsl_ran_fdist_pdf (const double x, const double nu1, const double nu2);
0070
0071 double gsl_ran_flat (const gsl_rng * r, const double a, const double b);
0072 double gsl_ran_flat_pdf (double x, const double a, const double b);
0073
0074 double gsl_ran_gamma (const gsl_rng * r, const double a, const double b);
0075 double gsl_ran_gamma_int (const gsl_rng * r, const unsigned int a);
0076 double gsl_ran_gamma_pdf (const double x, const double a, const double b);
0077 double gsl_ran_gamma_mt (const gsl_rng * r, const double a, const double b);
0078 double gsl_ran_gamma_knuth (const gsl_rng * r, const double a, const double b);
0079
0080 double gsl_ran_gaussian (const gsl_rng * r, const double sigma);
0081 double gsl_ran_gaussian_ratio_method (const gsl_rng * r, const double sigma);
0082 double gsl_ran_gaussian_ziggurat (const gsl_rng * r, const double sigma);
0083 double gsl_ran_gaussian_pdf (const double x, const double sigma);
0084
0085 double gsl_ran_ugaussian (const gsl_rng * r);
0086 double gsl_ran_ugaussian_ratio_method (const gsl_rng * r);
0087 double gsl_ran_ugaussian_pdf (const double x);
0088
0089 double gsl_ran_gaussian_tail (const gsl_rng * r, const double a, const double sigma);
0090 double gsl_ran_gaussian_tail_pdf (const double x, const double a, const double sigma);
0091
0092 double gsl_ran_ugaussian_tail (const gsl_rng * r, const double a);
0093 double gsl_ran_ugaussian_tail_pdf (const double x, const double a);
0094
0095 void gsl_ran_bivariate_gaussian (const gsl_rng * r, double sigma_x, double sigma_y, double rho, double *x, double *y);
0096 double gsl_ran_bivariate_gaussian_pdf (const double x, const double y, const double sigma_x, const double sigma_y, const double rho);
0097
0098 int gsl_ran_multivariate_gaussian (const gsl_rng * r, const gsl_vector * mu, const gsl_matrix * L, gsl_vector * result);
0099 int gsl_ran_multivariate_gaussian_log_pdf (const gsl_vector * x,
0100 const gsl_vector * mu,
0101 const gsl_matrix * L,
0102 double * result,
0103 gsl_vector * work);
0104 int gsl_ran_multivariate_gaussian_pdf (const gsl_vector * x,
0105 const gsl_vector * mu,
0106 const gsl_matrix * L,
0107 double * result,
0108 gsl_vector * work);
0109 int gsl_ran_multivariate_gaussian_mean (const gsl_matrix * X, gsl_vector * mu_hat);
0110 int gsl_ran_multivariate_gaussian_vcov (const gsl_matrix * X, gsl_matrix * sigma_hat);
0111
0112 int gsl_ran_wishart (const gsl_rng * r,
0113 const double df,
0114 const gsl_matrix * L,
0115 gsl_matrix * result,
0116 gsl_matrix * work);
0117 int gsl_ran_wishart_log_pdf (const gsl_matrix * X,
0118 const gsl_matrix * L_X,
0119 const double df,
0120 const gsl_matrix * L,
0121 double * result,
0122 gsl_matrix * work);
0123 int gsl_ran_wishart_pdf (const gsl_matrix * X,
0124 const gsl_matrix * L_X,
0125 const double df,
0126 const gsl_matrix * L,
0127 double * result,
0128 gsl_matrix * work);
0129
0130 double gsl_ran_landau (const gsl_rng * r);
0131 double gsl_ran_landau_pdf (const double x);
0132
0133 unsigned int gsl_ran_geometric (const gsl_rng * r, const double p);
0134 double gsl_ran_geometric_pdf (const unsigned int k, const double p);
0135
0136 unsigned int gsl_ran_hypergeometric (const gsl_rng * r, unsigned int n1, unsigned int n2, unsigned int t);
0137 double gsl_ran_hypergeometric_pdf (const unsigned int k, const unsigned int n1, const unsigned int n2, unsigned int t);
0138
0139 double gsl_ran_gumbel1 (const gsl_rng * r, const double a, const double b);
0140 double gsl_ran_gumbel1_pdf (const double x, const double a, const double b);
0141
0142 double gsl_ran_gumbel2 (const gsl_rng * r, const double a, const double b);
0143 double gsl_ran_gumbel2_pdf (const double x, const double a, const double b);
0144
0145 double gsl_ran_logistic (const gsl_rng * r, const double a);
0146 double gsl_ran_logistic_pdf (const double x, const double a);
0147
0148 double gsl_ran_lognormal (const gsl_rng * r, const double zeta, const double sigma);
0149 double gsl_ran_lognormal_pdf (const double x, const double zeta, const double sigma);
0150
0151 unsigned int gsl_ran_logarithmic (const gsl_rng * r, const double p);
0152 double gsl_ran_logarithmic_pdf (const unsigned int k, const double p);
0153
0154 void gsl_ran_multinomial (const gsl_rng * r, const size_t K,
0155 const unsigned int N, const double p[],
0156 unsigned int n[] );
0157 double gsl_ran_multinomial_pdf (const size_t K,
0158 const double p[], const unsigned int n[] );
0159 double gsl_ran_multinomial_lnpdf (const size_t K,
0160 const double p[], const unsigned int n[] );
0161
0162
0163 unsigned int gsl_ran_negative_binomial (const gsl_rng * r, double p, double n);
0164 double gsl_ran_negative_binomial_pdf (const unsigned int k, const double p, double n);
0165
0166 unsigned int gsl_ran_pascal (const gsl_rng * r, double p, unsigned int n);
0167 double gsl_ran_pascal_pdf (const unsigned int k, const double p, unsigned int n);
0168
0169 double gsl_ran_pareto (const gsl_rng * r, double a, const double b);
0170 double gsl_ran_pareto_pdf (const double x, const double a, const double b);
0171
0172 unsigned int gsl_ran_poisson (const gsl_rng * r, double mu);
0173 void gsl_ran_poisson_array (const gsl_rng * r, size_t n, unsigned int array[],
0174 double mu);
0175 double gsl_ran_poisson_pdf (const unsigned int k, const double mu);
0176
0177 double gsl_ran_rayleigh (const gsl_rng * r, const double sigma);
0178 double gsl_ran_rayleigh_pdf (const double x, const double sigma);
0179
0180 double gsl_ran_rayleigh_tail (const gsl_rng * r, const double a, const double sigma);
0181 double gsl_ran_rayleigh_tail_pdf (const double x, const double a, const double sigma);
0182
0183 double gsl_ran_tdist (const gsl_rng * r, const double nu);
0184 double gsl_ran_tdist_pdf (const double x, const double nu);
0185
0186 double gsl_ran_laplace (const gsl_rng * r, const double a);
0187 double gsl_ran_laplace_pdf (const double x, const double a);
0188
0189 double gsl_ran_levy (const gsl_rng * r, const double c, const double alpha);
0190 double gsl_ran_levy_skew (const gsl_rng * r, const double c, const double alpha, const double beta);
0191
0192 double gsl_ran_weibull (const gsl_rng * r, const double a, const double b);
0193 double gsl_ran_weibull_pdf (const double x, const double a, const double b);
0194
0195 void gsl_ran_dir_2d (const gsl_rng * r, double * x, double * y);
0196 void gsl_ran_dir_2d_trig_method (const gsl_rng * r, double * x, double * y);
0197 void gsl_ran_dir_3d (const gsl_rng * r, double * x, double * y, double * z);
0198 void gsl_ran_dir_nd (const gsl_rng * r, size_t n, double * x);
0199
0200 void gsl_ran_shuffle (const gsl_rng * r, void * base, size_t nmembm, size_t size);
0201 int gsl_ran_choose (const gsl_rng * r, void * dest, size_t k, void * src, size_t n, size_t size) ;
0202 void gsl_ran_sample (const gsl_rng * r, void * dest, size_t k, void * src, size_t n, size_t size) ;
0203
0204
0205 typedef struct {
0206 size_t K;
0207 size_t *A;
0208 double *F;
0209 } gsl_ran_discrete_t;
0210
0211 gsl_ran_discrete_t * gsl_ran_discrete_preproc (size_t K, const double *P);
0212 void gsl_ran_discrete_free(gsl_ran_discrete_t *g);
0213 size_t gsl_ran_discrete (const gsl_rng *r, const gsl_ran_discrete_t *g);
0214 double gsl_ran_discrete_pdf (size_t k, const gsl_ran_discrete_t *g);
0215
0216
0217 __END_DECLS
0218
0219 #endif