File: Random-number-environment-variables.html

package info (click to toggle)
gsl-ref-html 2.3-1
  • links: PTS
  • area: non-free
  • in suites: bullseye, buster, sid
  • size: 6,876 kB
  • ctags: 4,574
  • sloc: makefile: 35
file content (167 lines) | stat: -rw-r--r-- 7,504 bytes parent folder | download
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
162
163
164
165
166
167
<!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, 2014, 2015, 2016 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 the
Invariant Sections being "GNU General Public License" and "Free Software
Needs Free Documentation", the Front-Cover text being "A GNU Manual",
and with the Back-Cover Text being (a) (see below). A copy of the
license is included in the section entitled "GNU Free Documentation
License".

(a) The Back-Cover Text is: "You have the freedom to copy and modify this
GNU Manual." -->
<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
<head>
<title>GNU Scientific Library &ndash; Reference Manual: Random number environment variables</title>

<meta name="description" content="GNU Scientific Library &ndash; Reference Manual: Random number environment variables">
<meta name="keywords" content="GNU Scientific Library &ndash; 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> &nbsp; [<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&rsquo;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 &lt;stdio.h&gt;
#include &lt;gsl/gsl_rng.h&gt;

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 (&quot;generator type: %s\n&quot;, gsl_rng_name (r));
  printf (&quot;seed = %lu\n&quot;, gsl_rng_default_seed);
  printf (&quot;first value = %lu\n&quot;, 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=&quot;taus&quot; 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> &nbsp; [<a href="Function-Index.html#Function-Index" title="Index" rel="index">Index</a>]</p>
</div>



</body>
</html>