1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The GSL Team.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections and no cover texts. A copy of the license is
included in the section entitled "GNU Free Documentation License". -->
<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
<head>
<title>GNU Scientific Library – Reference Manual: Random number environment variables</title>
<meta name="description" content="GNU Scientific Library – Reference Manual: Random number environment variables">
<meta name="keywords" content="GNU Scientific Library – Reference Manual: Random number environment variables">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Function-Index.html#Function-Index" rel="index" title="Function Index">
<link href="Random-Number-Generation.html#Random-Number-Generation" rel="up" title="Random Number Generation">
<link href="Copying-random-number-generator-state.html#Copying-random-number-generator-state" rel="next" title="Copying random number generator state">
<link href="Auxiliary-random-number-generator-functions.html#Auxiliary-random-number-generator-functions" rel="previous" title="Auxiliary random number generator functions">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>
</head>
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="Random-number-environment-variables"></a>
<div class="header">
<p>
Next: <a href="Copying-random-number-generator-state.html#Copying-random-number-generator-state" accesskey="n" rel="next">Copying random number generator state</a>, Previous: <a href="Auxiliary-random-number-generator-functions.html#Auxiliary-random-number-generator-functions" accesskey="p" rel="previous">Auxiliary random number generator functions</a>, Up: <a href="Random-Number-Generation.html#Random-Number-Generation" accesskey="u" rel="up">Random Number Generation</a> [<a href="Function-Index.html#Function-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Random-number-environment-variables-1"></a>
<h3 class="section">18.6 Random number environment variables</h3>
<p>The library allows you to choose a default generator and seed from the
environment variables <code>GSL_RNG_TYPE</code> and <code>GSL_RNG_SEED</code> and
the function <code>gsl_rng_env_setup</code>. This makes it easy try out
different generators and seeds without having to recompile your program.
</p>
<dl>
<dt><a name="index-gsl_005frng_005fenv_005fsetup"></a>Function: <em>const gsl_rng_type *</em> <strong>gsl_rng_env_setup</strong> <em>(void)</em></dt>
<dd><a name="index-GSL_005fRNG_005fTYPE"></a>
<a name="index-GSL_005fRNG_005fSEED-2"></a>
<a name="index-gsl_005frng_005fdefault"></a>
<a name="index-gsl_005frng_005fdefault_005fseed-1"></a>
<p>This function reads the environment variables <code>GSL_RNG_TYPE</code> and
<code>GSL_RNG_SEED</code> and uses their values to set the corresponding
library variables <code>gsl_rng_default</code> and
<code>gsl_rng_default_seed</code>. These global variables are defined as
follows,
</p>
<div class="example">
<pre class="example">extern const gsl_rng_type *gsl_rng_default
extern unsigned long int gsl_rng_default_seed
</pre></div>
<p>The environment variable <code>GSL_RNG_TYPE</code> should be the name of a
generator, such as <code>taus</code> or <code>mt19937</code>. The environment
variable <code>GSL_RNG_SEED</code> should contain the desired seed value. It
is converted to an <code>unsigned long int</code> using the C library function
<code>strtoul</code>.
</p>
<p>If you don’t specify a generator for <code>GSL_RNG_TYPE</code> then
<code>gsl_rng_mt19937</code> is used as the default. The initial value of
<code>gsl_rng_default_seed</code> is zero.
</p>
</dd></dl>
<p>Here is a short program which shows how to create a global
generator using the environment variables <code>GSL_RNG_TYPE</code> and
<code>GSL_RNG_SEED</code>,
</p>
<div class="example">
<pre class="verbatim">#include <stdio.h>
#include <gsl/gsl_rng.h>
gsl_rng * r; /* global generator */
int
main (void)
{
const gsl_rng_type * T;
gsl_rng_env_setup();
T = gsl_rng_default;
r = gsl_rng_alloc (T);
printf ("generator type: %s\n", gsl_rng_name (r));
printf ("seed = %lu\n", gsl_rng_default_seed);
printf ("first value = %lu\n", gsl_rng_get (r));
gsl_rng_free (r);
return 0;
}
</pre></div>
<p>Running the program without any environment variables uses the initial
defaults, an <code>mt19937</code> generator with a seed of 0,
</p>
<div class="example">
<pre class="example">$ ./a.out
</pre><pre class="verbatim">generator type: mt19937
seed = 0
first value = 4293858116
</pre></div>
<p>By setting the two variables on the command line we can
change the default generator and the seed,
</p>
<div class="example">
<pre class="example">$ GSL_RNG_TYPE="taus" GSL_RNG_SEED=123 ./a.out
GSL_RNG_TYPE=taus
GSL_RNG_SEED=123
generator type: taus
seed = 123
first value = 2720986350
</pre></div>
<hr>
<div class="header">
<p>
Next: <a href="Copying-random-number-generator-state.html#Copying-random-number-generator-state" accesskey="n" rel="next">Copying random number generator state</a>, Previous: <a href="Auxiliary-random-number-generator-functions.html#Auxiliary-random-number-generator-functions" accesskey="p" rel="previous">Auxiliary random number generator functions</a>, Up: <a href="Random-Number-Generation.html#Random-Number-Generation" accesskey="u" rel="up">Random Number Generation</a> [<a href="Function-Index.html#Function-Index" title="Index" rel="index">Index</a>]</p>
</div>
</body>
</html>
|