GNU Scientific Library – Reference Manual: Random Number Generator Examples

Next: Random Number References and Further Reading, Previous: Random Number Generator Performance, Up: Random Number Generation [Index]

### 18.13 Examples

The following program demonstrates the use of a random number generator to produce uniform random numbers in the range [0.0, 1.0),

    #include <stdio.h>
    #include <gsl/gsl_rng.h>

    int
    main (void)
    {
      const gsl_rng_type * T;
      gsl_rng * r;

      int i, n = 10;

      gsl_rng_env_setup();

      T = gsl_rng_default;
      r = gsl_rng_alloc (T);

      for (i = 0; i < n; i++)
        {
          double u = gsl_rng_uniform (r);
          printf ("%.5f\n", u);
        }

      gsl_rng_free (r);

      return 0;
    }

Here is the output of the program,

    $ ./a.out

    0.99974
    0.16291
    0.28262
    0.94720
    0.23166
    0.48497
    0.95748
    0.74431
    0.54004
    0.73995

The numbers depend on the seed used by the generator. The default seed can be changed with the `GSL_RNG_SEED` environment variable to produce a different stream of numbers. The generator itself can be changed using the environment variable `GSL_RNG_TYPE`. Here is the output of the program using a seed value of 123 and the multiple-recursive generator `mrg`,

    $ GSL_RNG_SEED=123 GSL_RNG_TYPE=mrg ./a.out

    GSL_RNG_TYPE=mrg
    GSL_RNG_SEED=123
    0.33050
    0.86631
    0.32982
    0.67620
    0.53391
    0.06457
    0.16847
    0.70229
    0.04371
    0.86374