File: Sampling-from-a-random-number-generator.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 (140 lines) | stat: -rw-r--r-- 8,245 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
<!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: Sampling from a random number generator</title>

<meta name="description" content="GNU Scientific Library &ndash; Reference Manual: Sampling from a random number generator">
<meta name="keywords" content="GNU Scientific Library &ndash; Reference Manual: Sampling from a random number generator">
<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="Auxiliary-random-number-generator-functions.html#Auxiliary-random-number-generator-functions" rel="next" title="Auxiliary random number generator functions">
<link href="Random-number-generator-initialization.html#Random-number-generator-initialization" rel="previous" title="Random number generator initialization">
<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="Sampling-from-a-random-number-generator"></a>
<div class="header">
<p>
Next: <a href="Auxiliary-random-number-generator-functions.html#Auxiliary-random-number-generator-functions" accesskey="n" rel="next">Auxiliary random number generator functions</a>, Previous: <a href="Random-number-generator-initialization.html#Random-number-generator-initialization" accesskey="p" rel="previous">Random number generator initialization</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="Sampling-from-a-random-number-generator-1"></a>
<h3 class="section">18.4 Sampling from a random number generator</h3>

<p>The following functions return uniformly distributed random numbers,
either as integers or double precision floating point numbers.  Inline versions of these functions are used when <code>HAVE_INLINE</code> is defined.
To obtain non-uniform distributions see <a href="Random-Number-Distributions.html#Random-Number-Distributions">Random Number Distributions</a>.  
</p>
<dl>
<dt><a name="index-gsl_005frng_005fget"></a>Function: <em>unsigned long int</em> <strong>gsl_rng_get</strong> <em>(const gsl_rng * <var>r</var>)</em></dt>
<dd><p>This function returns a random integer from the generator <var>r</var>.  The
minimum and maximum values depend on the algorithm used, but all
integers in the range [<var>min</var>,<var>max</var>] are equally likely.  The
values of <var>min</var> and <var>max</var> can be determined using the auxiliary
functions <code>gsl_rng_max (r)</code> and <code>gsl_rng_min (r)</code>.
</p></dd></dl>

<dl>
<dt><a name="index-gsl_005frng_005funiform"></a>Function: <em>double</em> <strong>gsl_rng_uniform</strong> <em>(const gsl_rng * <var>r</var>)</em></dt>
<dd><p>This function returns a double precision floating point number uniformly
distributed in the range [0,1).  The range includes 0.0 but excludes 1.0.
The value is typically obtained by dividing the result of
<code>gsl_rng_get(r)</code> by <code>gsl_rng_max(r) + 1.0</code> in double
precision.  Some generators compute this ratio internally so that they
can provide floating point numbers with more than 32 bits of randomness
(the maximum number of bits that can be portably represented in a single
<code>unsigned long int</code>).
</p></dd></dl>

<dl>
<dt><a name="index-gsl_005frng_005funiform_005fpos"></a>Function: <em>double</em> <strong>gsl_rng_uniform_pos</strong> <em>(const gsl_rng * <var>r</var>)</em></dt>
<dd><p>This function returns a positive double precision floating point number
uniformly distributed in the range (0,1), excluding both 0.0 and 1.0.
The number is obtained by sampling the generator with the algorithm of
<code>gsl_rng_uniform</code> until a non-zero value is obtained.  You can use
this function if you need to avoid a singularity at 0.0.
</p></dd></dl>

<dl>
<dt><a name="index-gsl_005frng_005funiform_005fint"></a>Function: <em>unsigned long int</em> <strong>gsl_rng_uniform_int</strong> <em>(const gsl_rng * <var>r</var>, unsigned long int <var>n</var>)</em></dt>
<dd><p>This function returns a random integer from 0 to <em>n-1</em> inclusive
by scaling down and/or discarding samples from the generator <var>r</var>.
All integers in the range <em>[0,n-1]</em> are produced with equal
probability.  For generators with a non-zero minimum value an offset
is applied so that zero is returned with the correct probability.
</p>
<p>Note that this function is designed for sampling from ranges smaller
than the range of the underlying generator.  The parameter <var>n</var>
must be less than or equal to the range of the generator <var>r</var>.
If <var>n</var> is larger than the range of the generator then the function
calls the error handler with an error code of <code>GSL_EINVAL</code> and
returns zero.
</p>
<p>In particular, this function is not intended for generating the full range of
unsigned integer values <em>[0,2^32-1]</em>. Instead
choose a generator with the maximal integer range and zero minimum
value, such as <code>gsl_rng_ranlxd1</code>, <code>gsl_rng_mt19937</code> or
<code>gsl_rng_taus</code>, and sample it directly using
<code>gsl_rng_get</code>.  The range of each generator can be found using
the auxiliary functions described in the next section.
</p></dd></dl>

<hr>
<div class="header">
<p>
Next: <a href="Auxiliary-random-number-generator-functions.html#Auxiliary-random-number-generator-functions" accesskey="n" rel="next">Auxiliary random number generator functions</a>, Previous: <a href="Random-number-generator-initialization.html#Random-number-generator-initialization" accesskey="p" rel="previous">Random number generator initialization</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>