GSLを使った一般の確率分布に離散分布の乱数発生(一般離散分布)。
これで片付けないとメモリーがいっぱいになる
void gsl_ran_discrete_free (gsl_ran_discrete_t * t);
#include<stdio.h> #include<gsl/gsl_rng.h> #include<gsl/gsl_randist.h> int main(void){ double p[3]; int i; const gsl_rng_type *T; gsl_rng *r; //gsl_rng_setup(); T=gsl_rng_default; r=gsl_rng_alloc(T); //gsl_rng_set(r,time(NULL)); gsl_rng_set(r,1); p[0]=0.1; p[1]=0.3; p[2]=0.6; gsl_ran_discrete_t* t= gsl_ran_discrete_preproc (3,p); for(i=0;i<=10000;i++){ printf("%d\n",gsl_ran_discrete(r,t)); } void gsl_ran_discrete_free (gsl_ran_discrete_t * t); }
http://www.cbrc.jp/~tominaga/translations/gsl/gsl-1.8/gsl18j.pdf