2
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
3
<!-- Created on October, 14 2005 by texi2html 1.64 -->
5
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
6
Karl Berry <karl@freefriends.org>
7
Olaf Bachmann <obachman@mathematik.uni-kl.de>
9
Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
10
Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
14
<TITLE>Blitz++: Random Number Generators</TITLE>
16
<META NAME="description" CONTENT="Blitz++: Random Number Generators">
17
<META NAME="keywords" CONTENT="Blitz++: Random Number Generators">
18
<META NAME="resource-type" CONTENT="document">
19
<META NAME="distribution" CONTENT="global">
20
<META NAME="Generator" CONTENT="texi2html 1.64">
24
<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
27
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
28
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_8.html#SEC141"> < </A>]</TD>
29
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC143"> > </A>]</TD>
30
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD>
31
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz.html#SEC_Top"> Up </A>]</TD>
32
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_10.html#SEC158"> >> </A>]</TD>
33
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz.html#SEC_Top">Top</A>]</TD>
34
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_toc.html#SEC_Contents">Contents</A>]</TD>
35
<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
36
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_abt.html#SEC_About"> ? </A>]</TD>
38
<H1> 9. Random Number Generators </H1>
39
<!--docid::SEC142::-->
44
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
45
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC142"> < </A>]</TD>
46
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC144"> > </A>]</TD>
47
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD>
48
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC142"> Up </A>]</TD>
49
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_10.html#SEC158"> >> </A>]</TD>
50
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz.html#SEC_Top">Top</A>]</TD>
51
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_toc.html#SEC_Contents">Contents</A>]</TD>
52
<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
53
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_abt.html#SEC_About"> ? </A>]</TD>
55
<H2> 9.1 Overview </H2>
56
<!--docid::SEC143::-->
59
These are the basic random number generators (RNGs):
68
<DT><CODE>Uniform</CODE>
69
<DD>Uniform reals on [0,1)
72
<DT><CODE>Normal</CODE>
73
<DD>Normal with specified mean and variance
76
<DT><CODE>Exponential</CODE>
77
<DD>Exponential with specified mean
80
<DT><CODE>DiscreteUniform</CODE>
81
<DD>Integers uniformly distributed over a specified range.
88
<DT><CODE>Gamma</CODE>
89
<DD>Gamma distribution
97
To use these generators, you need to include some subset of these headers:
100
<TABLE><tr><td> </td><td class=example><pre>#include <random/uniform.h>
101
#include <random/normal.h>
102
#include <random/exponential.h>
103
#include <random/discrete-uniform.h>
104
#include <random/beta.h>
105
#include <random/gamma.h>
106
#include <random/chisquare.h>
107
#include <random/F.h>
109
using namespace ranlib;
110
</pre></td></tr></table></P><P>
112
All the generators are inside the namespace <STRONG>ranlib</STRONG>,
113
<A NAME="IDX342"></A>
114
so a <STRONG>using namespace ranlib</STRONG> directive is required (alternately, you
115
can write e.g. <CODE>ranlib::Uniform<></CODE>).
118
These generators are all class templates. The first template parameter is
119
the number type you want to generate: float, double or long double for
120
continuous distributions, and integer for discrete distributions. This
121
parameter defaults to <CODE>float</CODE> for continuous distributions,
122
and <CODE>unsigned int</CODE> for discrete distributions.
125
The constructors are:
128
<TABLE><tr><td> </td><td class=example><pre>Uniform();
129
Normal(T mean, T standardDeviation);
131
DiscreteUniform(T n); // range is 0 .. n-1
136
</pre></td></tr></table></P><P>
138
where <CODE>T</CODE> is the first template parameter (<CODE>float</CODE>, <CODE>double</CODE>,
139
or <CODE>long double</CODE>). To obtain a random number, use the method
140
<CODE>random()</CODE>. Here is an example of constructing and using a
141
<CODE>Normal</CODE> generator:
144
<TABLE><tr><td> </td><td class=example><pre>#include <random/normal.h>
146
using namespace ranlib;
150
Normal<double> normalGen;
151
double x = normalGen.random(); // x is a normal random number
153
</pre></td></tr></table></P><P>
156
<A NAME="SEC144"></A>
157
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
158
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC143"> < </A>]</TD>
159
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC145"> > </A>]</TD>
160
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC145"> << </A>]</TD>
161
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC142"> Up </A>]</TD>
162
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_10.html#SEC158"> >> </A>]</TD>
163
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz.html#SEC_Top">Top</A>]</TD>
164
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_toc.html#SEC_Contents">Contents</A>]</TD>
165
<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
166
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_abt.html#SEC_About"> ? </A>]</TD>
168
<H2> 9.2 Note: Parallel random number generators </H2>
169
<!--docid::SEC144::-->
172
The generators which Blitz++ provides are not suitable for parallel
173
programs. If you need parallel RNGs, you may find
174
<A HREF="http://www.ncsa.uiuc.edu/Apps/SPRNG">http://www.ncsa.uiuc.edu/Apps/SPRNG</A> useful.
178
<A NAME="SEC145"></A>
179
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
180
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC144"> < </A>]</TD>
181
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC146"> > </A>]</TD>
182
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC146"> << </A>]</TD>
183
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC142"> Up </A>]</TD>
184
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_10.html#SEC158"> >> </A>]</TD>
185
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz.html#SEC_Top">Top</A>]</TD>
186
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_toc.html#SEC_Contents">Contents</A>]</TD>
187
<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
188
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_abt.html#SEC_About"> ? </A>]</TD>
190
<H2> 9.3 Seeding a random number generator </H2>
191
<!--docid::SEC145::-->
194
<A NAME="IDX343"></A>
197
You may seed a random number generator using the member function
198
<CODE>seed(unsigned int)</CODE>.
199
<A NAME="IDX344"></A>
200
By default, all random
201
number generators share the same underlying integer random number generator.
202
So seeding one generator will seed them all. (Note: you can create
203
generators with their own internal state; see the sections below). You
204
should generally only seed a random number generator once, at the beginning
208
Here is an example of seeding with the system clock:
211
<TABLE><tr><td> </td><td class=example><pre>#include <random/uniform.h>
212
#include <time.h>
214
using namespace ranlib;
218
// At start of program, seed with the system time so we get
219
// a different stream of random numbers each run.
220
Uniform<float> x;
221
x.seed((unsigned int)time(0));
226
</pre></td></tr></table></P><P>
228
Note: you may be tempted to seed the random number generator from a static
229
initializer. <STRONG>Don't do it!</STRONG> Due to an oddity of C++, there is no
230
guarantee on the order of static initialization when templates are involved.
231
Hence, you may seed the RNG before its constructor is invoked, in which case
232
your program will crash. If you don't know what a static initializer is,
233
don't worry -- you're safe!
237
<A NAME="SEC146"></A>
238
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
239
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC145"> < </A>]</TD>
240
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC147"> > </A>]</TD>
241
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC147"> << </A>]</TD>
242
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC142"> Up </A>]</TD>
243
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_10.html#SEC158"> >> </A>]</TD>
244
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz.html#SEC_Top">Top</A>]</TD>
245
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_toc.html#SEC_Contents">Contents</A>]</TD>
246
<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
247
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_abt.html#SEC_About"> ? </A>]</TD>
249
<H2> 9.4 Detailed description of RNGs </H2>
250
<!--docid::SEC146::-->
253
<A NAME="IDX345"></A>
256
There are really two types of RNGs:
260
<DT><CODE>Integer</CODE>
261
<DD>RNGs provide uniformly distributed, unsigned 32 bit integers.
262
<A NAME="IDX346"></A>
263
<A NAME="IDX347"></A>
266
<DT><CODE>RNGs</CODE>
267
<DD>use Integer RNGs to provide other kinds of random numbers.
271
By default, the Integer RNG used is a faithful adaptation of the Mersenne
272
Twister <CODE>MT19937</CODE> @cindex MersenneTwister due to Matsumoto and
273
Nishimura (see <CITE>ACM Transactions on Modeling and Computer Simulation,
274
Vol. 8, No. 1, January 1998, pp 3-30</CITE>,
275
<A HREF="http://www.math.keio.ac.jp/~matumoto/emt.html">http://www.math.keio.ac.jp/~matumoto/emt.html</A>,
276
<A HREF="http://www.acm.org/pubs/citations/journals/tomacs/1998-8-1/p3-matsumoto/">http://www.acm.org/pubs/citations/journals/tomacs/1998-8-1/p3-matsumoto/</A>).
277
This generator has a period of
280
, passed several stringent
281
statistical tests (including the
282
<A HREF="http://stat.fsu.edu/~geo/diehard.html">http://stat.fsu.edu/~geo/diehard.html</A> tests), and has speed
283
comparable to other modern generators.
287
<A NAME="SEC147"></A>
288
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
289
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC146"> < </A>]</TD>
290
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC148"> > </A>]</TD>
291
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC148"> << </A>]</TD>
292
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC142"> Up </A>]</TD>
293
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_10.html#SEC158"> >> </A>]</TD>
294
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz.html#SEC_Top">Top</A>]</TD>
295
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_toc.html#SEC_Contents">Contents</A>]</TD>
296
<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
297
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_abt.html#SEC_About"> ? </A>]</TD>
299
<H2> 9.5 Template parameters </H2>
300
<!--docid::SEC147::-->
303
RNGs take three template parameters, all of which have default values.
304
Using the <CODE>Uniform</CODE> RNG as an example, the template parameters of
305
<CODE>Uniform<T, IRNG, stateTag></CODE> are:
310
<DD>is the type of random number to generate (one of <CODE>float</CODE>,
311
<CODE>double</CODE>, or <CODE>long double</CODE> for continuous distributions; an
312
integer type for discrete distributions). Note that generating double and
313
long double RNGs takes longer, because filling the entire mantissa with
314
random bits requires several random integers. The default parameter for
315
most generators is <CODE>float</CODE>.
318
<DT><CODE>IRNG</CODE>
319
<DD>is the underlying Integer RNG to use. The default is MersenneTwister.
322
<DT><CODE>stateTag</CODE>
323
<DD><A NAME="IDX348"></A>
324
is either <CODE>sharedState</CODE> or <CODE>independentState</CODE>. If
325
<CODE>sharedState</CODE>, the IRNG is shared with other generators. If
326
<CODE>independentState</CODE>, the RNG contains its own IRNG. The default is
332
<A NAME="SEC148"></A>
333
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
334
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC147"> < </A>]</TD>
335
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC149"> > </A>]</TD>
336
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC149"> << </A>]</TD>
337
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC142"> Up </A>]</TD>
338
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_10.html#SEC158"> >> </A>]</TD>
339
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz.html#SEC_Top">Top</A>]</TD>
340
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_toc.html#SEC_Contents">Contents</A>]</TD>
341
<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
342
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_abt.html#SEC_About"> ? </A>]</TD>
344
<H2> 9.6 Member functions </H2>
345
<!--docid::SEC148::-->
348
<A NAME="IDX349"></A>
351
RNGs have these methods:
354
<TABLE><tr><td> </td><td class=example><pre>T random();
355
</pre></td></tr></table><A NAME="IDX350"></A>
356
Returns a random number.
359
<TABLE><tr><td> </td><td class=example><pre>void seed(unsigned int);
360
</pre></td></tr></table><A NAME="IDX351"></A>
361
Seeds the underlying IRNG. See above for an example of seeding
362
with the system timer.
366
<A NAME="SEC149"></A>
367
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
368
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC148"> < </A>]</TD>
369
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC150"> > </A>]</TD>
370
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD>
371
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC142"> Up </A>]</TD>
372
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_10.html#SEC158"> >> </A>]</TD>
373
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz.html#SEC_Top">Top</A>]</TD>
374
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_toc.html#SEC_Contents">Contents</A>]</TD>
375
<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
376
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_abt.html#SEC_About"> ? </A>]</TD>
378
<H2> 9.7 Detailed listing of RNGs </H2>
379
<!--docid::SEC149::-->
382
To save space in the below list, template parameters have been omitted and
383
only constructors are listed. The notation [a,b] means an interval which
384
includes the endpoints a and b; (a,b) is an interval which does not include
389
<A NAME="SEC150"></A>
390
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
391
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC149"> < </A>]</TD>
392
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC151"> > </A>]</TD>
393
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD>
394
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC149"> Up </A>]</TD>
395
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_10.html#SEC158"> >> </A>]</TD>
396
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz.html#SEC_Top">Top</A>]</TD>
397
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_toc.html#SEC_Contents">Contents</A>]</TD>
398
<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
399
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_abt.html#SEC_About"> ? </A>]</TD>
401
<H3> 9.7.1 <TT>`random/uniform.h'</TT> </H3>
402
<!--docid::SEC150::-->
405
<TABLE><tr><td> </td><td class=example><pre>Uniform<>()
406
</pre></td></tr></table><A NAME="IDX352"></A>
407
Continuous uniform distribution on [0,1).
410
<TABLE><tr><td> </td><td class=example><pre>UniformClosedOpen<>()
411
</pre></td></tr></table><A NAME="IDX353"></A>
412
Continuous uniform distribution on [0,1). Same as <CODE>Uniform<></CODE>.
415
<TABLE><tr><td> </td><td class=example><pre>UniformClosed<>()
416
</pre></td></tr></table><A NAME="IDX354"></A>
417
Continuous uniform distribution on [0,1].
420
<TABLE><tr><td> </td><td class=example><pre>UniformOpen<>()
421
</pre></td></tr></table><A NAME="IDX355"></A>
422
Continuous uniform distribution on (0,1).
425
<TABLE><tr><td> </td><td class=example><pre>UniformOpenClosed<>()
426
</pre></td></tr></table><A NAME="IDX356"></A>
427
Continuous uniform distribution on (0,1].
431
<A NAME="SEC151"></A>
432
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
433
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC150"> < </A>]</TD>
434
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC152"> > </A>]</TD>
435
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC152"> << </A>]</TD>
436
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC149"> Up </A>]</TD>
437
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_10.html#SEC158"> >> </A>]</TD>
438
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz.html#SEC_Top">Top</A>]</TD>
439
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_toc.html#SEC_Contents">Contents</A>]</TD>
440
<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
441
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_abt.html#SEC_About"> ? </A>]</TD>
443
<H3> 9.7.2 <TT>`random/normal.h'</TT> </H3>
444
<!--docid::SEC151::-->
447
<TABLE><tr><td> </td><td class=example><pre>NormalUnit<>()
448
</pre></td></tr></table><A NAME="IDX357"></A>
449
Continuous normal distribution with mean 0 and variance 1.
452
<TABLE><tr><td> </td><td class=example><pre>Normal<>(T mean, T standardDeviation)
453
</pre></td></tr></table><A NAME="IDX358"></A>
454
Continuous normal distribution with specified mean and standard
459
<A NAME="SEC152"></A>
460
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
461
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC151"> < </A>]</TD>
462
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC153"> > </A>]</TD>
463
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC153"> << </A>]</TD>
464
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC149"> Up </A>]</TD>
465
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_10.html#SEC158"> >> </A>]</TD>
466
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz.html#SEC_Top">Top</A>]</TD>
467
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_toc.html#SEC_Contents">Contents</A>]</TD>
468
<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
469
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_abt.html#SEC_About"> ? </A>]</TD>
471
<H3> 9.7.3 <TT>`random/exponential.h'</TT> </H3>
472
<!--docid::SEC152::-->
475
<TABLE><tr><td> </td><td class=example><pre>ExponentialUnit<>()
476
</pre></td></tr></table><A NAME="IDX359"></A>
477
Continuous exponential distribution with mean 1.
480
<TABLE><tr><td> </td><td class=example><pre>Exponential<>(T mean)
481
</pre></td></tr></table><A NAME="IDX360"></A>
482
Continuous exponential distribution with specified mean.
486
<A NAME="SEC153"></A>
487
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
488
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC152"> < </A>]</TD>
489
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC154"> > </A>]</TD>
490
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC154"> << </A>]</TD>
491
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC149"> Up </A>]</TD>
492
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_10.html#SEC158"> >> </A>]</TD>
493
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz.html#SEC_Top">Top</A>]</TD>
494
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_toc.html#SEC_Contents">Contents</A>]</TD>
495
<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
496
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_abt.html#SEC_About"> ? </A>]</TD>
498
<H3> 9.7.4 <TT>`random/beta.h'</TT> </H3>
499
<!--docid::SEC153::-->
502
<TABLE><tr><td> </td><td class=example><pre>Beta<>(T a, T b)
503
</pre></td></tr></table><A NAME="IDX361"></A>
504
Beta distribution with parameters a and b. The mean of the distribution is
505
<EM>a/(a+b)</EM> and its variance is <EM>ab/((a+b)^2(a+b+1))</EM>. Use the
506
method <CODE>setParameters(T a, T b)</CODE> to change the parameters.
510
<A NAME="SEC154"></A>
511
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
512
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC153"> < </A>]</TD>
513
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC155"> > </A>]</TD>
514
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC155"> << </A>]</TD>
515
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC149"> Up </A>]</TD>
516
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_10.html#SEC158"> >> </A>]</TD>
517
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz.html#SEC_Top">Top</A>]</TD>
518
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_toc.html#SEC_Contents">Contents</A>]</TD>
519
<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
520
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_abt.html#SEC_About"> ? </A>]</TD>
522
<H3> 9.7.5 <TT>`random/chisquare.h'</TT> </H3>
523
<!--docid::SEC154::-->
526
<TABLE><tr><td> </td><td class=example><pre>ChiSquare<>(T df)
527
</pre></td></tr></table><A NAME="IDX362"></A>
528
<EM>\chi^2</EM> distribution with <CODE>df</CODE> degrees of freedom. The parameter
529
df must be positive. Use the method <CODE>setDF(T df)</CODE> to change the
534
<A NAME="SEC155"></A>
535
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
536
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC154"> < </A>]</TD>
537
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC156"> > </A>]</TD>
538
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC156"> << </A>]</TD>
539
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC149"> Up </A>]</TD>
540
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_10.html#SEC158"> >> </A>]</TD>
541
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz.html#SEC_Top">Top</A>]</TD>
542
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_toc.html#SEC_Contents">Contents</A>]</TD>
543
<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
544
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_abt.html#SEC_About"> ? </A>]</TD>
546
<H3> 9.7.6 <TT>`random/gamma.h'</TT> </H3>
547
<!--docid::SEC155::-->
550
<TABLE><tr><td> </td><td class=example><pre>Gamma<>(T mean)
551
</pre></td></tr></table><A NAME="IDX363"></A>
552
Gamma distribution with specified mean. The mean must
553
be positive. Use the method <CODE>setMean(T mean)</CODE> to
558
<A NAME="SEC156"></A>
559
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
560
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC155"> < </A>]</TD>
561
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC157"> > </A>]</TD>
562
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC157"> << </A>]</TD>
563
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC149"> Up </A>]</TD>
564
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_10.html#SEC158"> >> </A>]</TD>
565
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz.html#SEC_Top">Top</A>]</TD>
566
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_toc.html#SEC_Contents">Contents</A>]</TD>
567
<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
568
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_abt.html#SEC_About"> ? </A>]</TD>
570
<H3> 9.7.7 <TT>`random/F.h'</TT> </H3>
571
<!--docid::SEC156::-->
574
<TABLE><tr><td> </td><td class=example><pre>F<>(T numeratorDF, T denominatorDF)
575
</pre></td></tr></table><A NAME="IDX364"></A>
576
F distribution with numerator and denominator degrees
577
of freedom specified. Both these parameters must be
578
positive. Use <CODE>setDF(T dfn, T dfd)</CODE> to change the
583
<A NAME="SEC157"></A>
584
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
585
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC156"> < </A>]</TD>
586
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_10.html#SEC158"> > </A>]</TD>
587
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD>
588
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_9.html#SEC149"> Up </A>]</TD>
589
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_10.html#SEC158"> >> </A>]</TD>
590
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz.html#SEC_Top">Top</A>]</TD>
591
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_toc.html#SEC_Contents">Contents</A>]</TD>
592
<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
593
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_abt.html#SEC_About"> ? </A>]</TD>
595
<H3> 9.7.8 <TT>`random/discrete-uniform.h'</TT> </H3>
596
<!--docid::SEC157::-->
599
<TABLE><tr><td> </td><td class=example><pre>DiscreteUniform<>(T n)
600
</pre></td></tr></table><A NAME="IDX365"></A>
601
Discrete uniform distribution over <EM>0, 1, \ldots, n-1</EM>.
604
<A NAME="Numeric properties"></A>
606
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
607
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD>
608
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_10.html#SEC158"> >> </A>]</TD>
609
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz.html#SEC_Top">Top</A>]</TD>
610
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_toc.html#SEC_Contents">Contents</A>]</TD>
611
<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
612
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="blitz_abt.html#SEC_About"> ? </A>]</TD>
616
This document was generated
617
by <I>Julian Cummings</I> on <I>October, 14 2005</I>
618
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
619
"><I>texi2html</I></A>