[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Help-gsl] random number distributions
From: |
Eric Smoll |
Subject: |
[Help-gsl] random number distributions |
Date: |
Fri, 26 Sep 2014 14:50:35 -0600 |
Hello,
I am interested in using the random number distributions provided here:
https://www.gnu.org/software/gsl/manual/html_node/Random-Number-Distributions.html
Ideally, I would like to make an executable that will return a random value
according to a specified distribution on each call. It seems like the
recommended usage of these functions will produce deterministic output on
each run if the seed is the same (e.g., see
https://www.gnu.org/software/gsl/manual/html_node/Random-Number-Distribution-Examples.html#Random-Number-Distribution-Examples
). I could set the seed to a new value on each call (GSL_RNG_SEED=2 ./tmp)
but I am wondering if there is a better way.
>From the last example shown here
https://www.gnu.org/software/gsl/manual/html_node/Random-Number-Distribution-Examples.html#Random-Number-Distribution-Examples
:
[ Desktop ] $ cat tmp.c
#include <stdio.h>
#include <gsl/gsl_cdf.h>
int
main (void)
{
double P, Q;
double x = 2.0;
P = gsl_cdf_ugaussian_P (x);
printf ("prob(x < %f) = %f\n", x, P);
Q = gsl_cdf_ugaussian_Q (x);
printf ("prob(x > %f) = %f\n", x, Q);
x = gsl_cdf_ugaussian_Pinv (P);
printf ("Pinv(%f) = %f\n", P, x);
x = gsl_cdf_ugaussian_Qinv (Q);
printf ("Qinv(%f) = %f\n", Q, x);
return 0;
}
[ Desktop ] $ gcc -Wall -I/usr/include -c tmp.c
[ Desktop ] $ gcc -L/usr/lib tmp.o -lgsl -lgslcblas -lm -o tmp
[ Desktop ] $ ./tmp
prob(x < 2.000000) = 0.977250
prob(x > 2.000000) = 0.022750
Pinv(0.977250) = 2.000000
Qinv(0.022750) = 2.000000
[ Desktop ] $ ./tmp
prob(x < 2.000000) = 0.977250
prob(x > 2.000000) = 0.022750
Pinv(0.977250) = 2.000000
Qinv(0.022750) = 2.000000
[ Desktop ] $ ./tmp
prob(x < 2.000000) = 0.977250
prob(x > 2.000000) = 0.022750
Pinv(0.977250) = 2.000000
Qinv(0.022750) = 2.000000
Best,
Eric
- [Help-gsl] random number distributions,
Eric Smoll <=