http://mine-weblog.blogspot.com/2009/05/gsl.html
http://www.gnu.org/software/gsl/manual/html_node/Random-Number-Distribution-Examples.html
#include <stdio.h> #include <gsl/gsl_rng.h> #include <gsl/gsl_randist.h> int main(){ const gsl_rng_type *T; //乱数生成器のタイプ gsl_rng *r; gsl_rng_setup(); //これいらないかも? T = gsl_rng_default; //デフォルトはmt19937 r = gsl_rng_alloc(T); //インスタンスを生成 //gsl_rng_set(r,time(NULL)); //初期化 gsl_rng_set(r,2); //正規分布 double sigma = 2.0; for(int i=0;i<10;i++){ printf("%lf\n" ,gsl_ran_gaussian(r,sigma)); } //対数正規分布 double m=3.0; gsl_ran_lognormal(r,m,sigma) //指数分布 gsl_ran_exponential(r,m) }
2016.04.06追記
仕様がかわったみたいでgsl_rng_setup()のところが変更の必要あり
$ cat test2.c #include<stdio.h> #include<gsl/gsl_rng.h> #include<gsl/gsl_randist.h> int main(){ int i; const gsl_rng_type *T; gsl_rng *r; gsl_rng_env_setup(); T = gsl_rng_default; r = gsl_rng_alloc(T); gsl_rng_set(r,2); double sigma = 2.0; for(i=0;i<10;i++){ printf("%lf\n" ,gsl_ran_gaussian(r,sigma)); } }