paradiseo/trunk/paradiseo-eo/doc/html/classeo_rng.html
legrand c3aec878e5 Paradiseo-eo sources added
git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@40 331e1502-861f-0410-8da2-ba01fb791d7f
2006-12-12 14:49:08 +00:00

581 lines
32 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>EO: eoRng Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3.9.1 -->
<div class="qindex"> <form class="search" action="search.php" method="get">
<a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a> | <span class="search"><u>S</u>earch&nbsp;for&nbsp;<input class="search" type="text" name="query" value="" size="20" accesskey="s"/></span></form></div>
<h1>eoRng Class Reference</h1>Random Number Generator.
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="eo_r_n_g_8h-source.html">utils/eoRNG.h</a>&gt;</code>
<p>
<p>Inheritance diagram for eoRng:
<p><center><img src="classeo_rng.png" usemap="#eoRng_map" border="0" alt=""></center>
<map name="eoRng_map">
<area href="classeo_object.html" alt="eoObject" shape="rect" coords="0,56,81,80">
<area href="classeo_persistent.html" alt="eoPersistent" shape="rect" coords="91,56,172,80">
<area href="classeo_printable.html" alt="eoPrintable" shape="rect" coords="91,0,172,24">
</map>
<a href="classeo_rng-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classeo_rng.html#a0">eoRng</a> (uint32_t s)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor. <a href="#a0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classeo_rng.html#a2">reseed</a> (uint32_t s)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Re-initializes the Random Number Generator. <a href="#a2"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classeo_rng.html#a3">oldReseed</a> (uint32_t s)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Re-initializes the Random Number Generator. <a href="#a3"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4" doxytag="eoRng::uniform"></a>
double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classeo_rng.html#a4">uniform</a> (double m=1.0)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">uniform(m = 1.0) returns a random double in the range [0, m) <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5" doxytag="eoRng::random"></a>
uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classeo_rng.html#a5">random</a> (uint32_t m)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classeo_rng.html#a5">random()</a> returns a random integer in the range [0, m) <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a6" doxytag="eoRng::flip"></a>
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classeo_rng.html#a6">flip</a> (float bias=0.5)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classeo_rng.html#a6">flip()</a> tosses a biased coin such that flip(x/100.0) will returns true x% of the time <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a7" doxytag="eoRng::normal"></a>
double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classeo_rng.html#a7">normal</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classeo_rng.html#a7">normal()</a> zero mean gaussian deviate with standard deviation of 1 <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a8" doxytag="eoRng::normal"></a>
double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classeo_rng.html#a8">normal</a> (double stdev)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">normal(stdev) zero mean gaussian deviate with user defined standard deviation <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a9" doxytag="eoRng::normal"></a>
double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classeo_rng.html#a9">normal</a> (double mean, double stdev)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">normal(mean, stdev) user defined mean gaussian deviate with user defined standard deviation <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a10" doxytag="eoRng::negexp"></a>
double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classeo_rng.html#a10">negexp</a> (double mean)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generates random numbers using a negative exponential distribution. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a11" doxytag="eoRng::rand"></a>
uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classeo_rng.html#a11">rand</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classeo_rng.html#a11">rand()</a> returns a random number in the range [0, rand_max) <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a12" doxytag="eoRng::rand_max"></a>
uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classeo_rng.html#a12">rand_max</a> (void) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classeo_rng.html#a12">rand_max()</a> the maximum returned by <a class="el" href="classeo_rng.html#a11">rand()</a> <br></td></tr>
<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename TYPE&gt; </td></tr>
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classeo_rng.html#a13">roulette_wheel</a> (const std::vector&lt; TYPE &gt; &amp;vec, TYPE total=0)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">roulette_wheel(vec, total = 0) does a roulette wheel selection on the input std::vector vec. <a href="#a13"></a><br></td></tr>
<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename TYPE&gt; </td></tr>
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">const TYPE &amp;&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classeo_rng.html#a14">choice</a> (const std::vector&lt; TYPE &gt; &amp;vec) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Randomly select element from vector. <a href="#a14"></a><br></td></tr>
<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename TYPE&gt; </td></tr>
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">TYPE &amp;&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classeo_rng.html#a15">choice</a> (std::vector&lt; TYPE &gt; &amp;vec)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Randomly select element from vector. <a href="#a15"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classeo_rng.html#a16">printOn</a> (std::ostream &amp;_os) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Write object. <a href="#a16"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classeo_rng.html#a17">readFrom</a> (std::istream &amp;_is)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read object. <a href="#a17"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classeo_rng.html#a18">className</a> (void) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the class id. <a href="#a18"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Private Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d0" doxytag="eoRng::restart"></a>
uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><b>restart</b> (void)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d1" doxytag="eoRng::initialize"></a>
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>initialize</b> (uint32_t seed)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classeo_rng.html#d2">eoRng</a> (const <a class="el" href="classeo_rng.html">eoRng</a> &amp;)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy constructor. <a href="#d2"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classeo_rng.html">eoRng</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classeo_rng.html#d3">operator=</a> (const <a class="el" href="classeo_rng.html">eoRng</a> &amp;)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assignmant operator. <a href="#d3"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Private Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="r0" doxytag="eoRng::state"></a>
uint32_t *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classeo_rng.html#r0">state</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Array for the state. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="r1" doxytag="eoRng::next"></a>
uint32_t *&nbsp;</td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="r2" doxytag="eoRng::left"></a>
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>left</b></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="r3" doxytag="eoRng::cached"></a>
bool&nbsp;</td><td class="memItemRight" valign="bottom"><b>cached</b></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="r4" doxytag="eoRng::cacheValue"></a>
float&nbsp;</td><td class="memItemRight" valign="bottom"><b>cacheValue</b></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="r5" doxytag="eoRng::N"></a>
const int&nbsp;</td><td class="memItemRight" valign="bottom"><b>N</b></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="r6" doxytag="eoRng::M"></a>
const int&nbsp;</td><td class="memItemRight" valign="bottom"><b>M</b></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="r7" doxytag="eoRng::K"></a>
const uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classeo_rng.html#r7">K</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Magic constant. <br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Random Number Generator.
<p>
eoRng is a persistent class that uses the ``Mersenne Twister'' random number generator MT19937 for generating random numbers. The various member functions implement useful functions for evolutionary algorithms. Included are: <a class="el" href="classeo_rng.html#a11">rand()</a>, <a class="el" href="classeo_rng.html#a5">random()</a>, <a class="el" href="classeo_rng.html#a6">flip()</a> and <a class="el" href="classeo_rng.html#a7">normal()</a>.<p>
<a class="el" href="class_e_o.html">EO</a> provides a global random number generator <code>rng</code> that is seeded by the current UNIX time at program start. Moreover some global convenience functions are provided that use the global random number generator: <code>random</code>, <code>normal</code>.<p>
<dl compact><dt><b>Warning:</b></dt><dd>If you want to repeatedly generated the same sequence of pseudo-random numbers, you should always reseed the generator at the beginning of your code.</dd></dl>
<h1>Documentation in original file</h1>
<p>
This is the ``Mersenne Twister'' random number generator MT19937, which generates pseudorandom integers uniformly distributed in 0..(2^32 - 1) starting from any odd seed in 0..(2^32 - 1). This version is a recode by Shawn Cokus (<a href="mailto:Cokus@math.washington.edu">Cokus@math.washington.edu</a>) on March 8, 1998 of a version by Takuji Nishimura (who had suggestions from Topher Cooper and Marc Rieffel in July-August 1997).<p>
Effectiveness of the recoding (on Goedel2.math.washington.edu, a DEC Alpha running OSF/1) using GCC -O3 as a compiler: before recoding: 51.6 sec. to generate 300 million random numbers; after recoding: 24.0 sec. for the same (i.e., 46.5% of original time), so speed is now about 12.5 million random number generations per second on this machine.<p>
According to the URL &lt;<a href="http://www.math.keio.ac.jp/~matumoto/emt.html">http://www.math.keio.ac.jp/~matumoto/emt.html</a>&gt; (and paraphrasing a bit in places), the Mersenne Twister is ``designed with consideration of the flaws of various existing generators,'' has a period of 2^19937 - 1, gives a sequence that is 623-dimensionally equidistributed, and ``has passed many std::stringent tests, including the die-hard test of G. Marsaglia and the load test of P. Hellekalek and S. Wegenkittl.'' It is efficient in memory usage (typically using 2506 to 5012 bytes of static data, depending on data type sizes, and the code is quite short as well). It generates random numbers in batches of 624 at a time, so the caching and pipelining of modern systems is exploited. It is also divide- and mod-free.<p>
The code as Shawn received it included the following notice: <code>Copyright (C) 1997 Makoto Matsumoto and Takuji Nishimura. When you use this, send an e-mail to &lt;<a href="mailto:matumoto@math.keio.ac.jp">matumoto@math.keio.ac.jp</a>&gt; with an appropriate reference to your work.</code> It would be nice to Cc: &lt;<a href="mailto:Cokus@math.washington.edu">Cokus@math.washington.edu</a>&gt; and &lt;<a href="mailto:eodev-main@lists.sourceforge.net">eodev-main@lists.sourceforge.net</a>&gt; when you write.<p>
<h1>Portability</h1>
<p>
Note for people porting <a class="el" href="class_e_o.html">EO</a> to other platforms: please make sure that the type uint32_t in the file <a class="el" href="eo_r_n_g_8h.html">eoRng.h</a> is exactly 32 bits long. It may in principle be longer, but not shorter. If it is longer, file compatibility between <a class="el" href="class_e_o.html">EO</a> on different platforms may be broken.
<p>
<p>
Definition at line <a class="el" href="eo_r_n_g_8h-source.html#l00103">103</a> of file <a class="el" href="eo_r_n_g_8h-source.html">eoRNG.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="a0" doxytag="eoRng::eoRng"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">eoRng::eoRng </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">uint32_t&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>s</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap><code> [inline]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Constructor.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>s</em>&nbsp;</td><td>Random seed; if you want another seed, use reseed.</td></tr>
</table>
</dl>
<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="classeo_rng.html#a2">reseed</a> for details on usage of the seeding value. </dd></dl>
<p>
Definition at line <a class="el" href="eo_r_n_g_8h-source.html#l00113">113</a> of file <a class="el" href="eo_r_n_g_8h-source.html">eoRNG.h</a>.
<p>
References <a class="el" href="eo_r_n_g_8h-source.html#l00365">K</a>, and <a class="el" href="eo_r_n_g_8h-source.html#l00349">state</a>. </td>
</tr>
</table>
<a class="anchor" name="d2" doxytag="eoRng::eoRng"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">eoRng::eoRng </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">const <a class="el" href="classeo_rng.html">eoRng</a> &amp;&nbsp;</td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap><code> [private]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Copy constructor.
<p>
Private copy ctor and assignment operator to make sure that nobody accidentally copies the random number generator. If you want similar RNG's, make two RNG's and initialize them with the same seed.<p>
As it cannot be called, we do not provide an implementation. </td>
</tr>
</table>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="a2" doxytag="eoRng::reseed"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void eoRng::reseed </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">uint32_t&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>s</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap><code> [inline]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Re-initializes the Random Number Generator.
<p>
WARNING: Jeroen Eggermont &lt;<a href="mailto:jeggermo@liacs.nl">jeggermo@liacs.nl</a>&gt; noticed that initialize does not differentiate between odd and even numbers, therefore the argument to reseed is now doubled before being passed on.<p>
Manually divide the seed by 2 if you want to re-run old runs<p>
<dl compact><dt><b>Version:</b></dt><dd>MS. 5 Oct. 2001 </dd></dl>
<p>
Definition at line <a class="el" href="eo_r_n_g_8h-source.html#l00135">135</a> of file <a class="el" href="eo_r_n_g_8h-source.html">eoRNG.h</a>. </td>
</tr>
</table>
<a class="anchor" name="a3" doxytag="eoRng::oldReseed"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void eoRng::oldReseed </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">uint32_t&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>s</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap><code> [inline]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Re-initializes the Random Number Generator.
<p>
This is the traditional seeding procedure. This version is deprecated and only provided for compatibility with old code. In new projects you should use reseed.<p>
<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="classeo_rng.html#a2">reseed</a> for details on usage of the seeding value.</dd></dl>
<dl compact><dt><b>Version:</b></dt><dd>old version (deprecated) </dd></dl>
<p>
Definition at line <a class="el" href="eo_r_n_g_8h-source.html#l00150">150</a> of file <a class="el" href="eo_r_n_g_8h-source.html">eoRNG.h</a>. </td>
</tr>
</table>
<a class="anchor" name="a13" doxytag="eoRng::roulette_wheel"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" colspan="4">
template&lt;typename TYPE&gt; </td>
</tr>
<tr>
<td class="md" nowrap valign="top">int eoRng::roulette_wheel </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">const std::vector&lt; TYPE &gt; &amp;&nbsp;</td>
<td class="mdname" nowrap> <em>vec</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>TYPE&nbsp;</td>
<td class="mdname" nowrap> <em>total</em> = <code>0</code></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"><code> [inline]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
roulette_wheel(vec, total = 0) does a roulette wheel selection on the input std::vector vec.
<p>
If the total is not supplied, it is calculated. It returns an integer denoting the selected argument.
<p>
Definition at line <a class="el" href="eo_r_n_g_8h-source.html#l00225">225</a> of file <a class="el" href="eo_r_n_g_8h-source.html">eoRNG.h</a>.
<p>
References <a class="el" href="eo_r_n_g_8h-source.html#l00158">uniform()</a>.
<p>
Referenced by <a class="el" href="eo_proportional_combined_op_8h-source.html#l00197">eoPropCombinedQuadOp&lt; EOT &gt;::operator()()</a>, <a class="el" href="eo_proportional_combined_op_8h-source.html#l00138">eoPropCombinedBinOp&lt; EOT &gt;::operator()()</a>, <a class="el" href="eo_proportional_combined_op_8h-source.html#l00091">eoPropCombinedMonOp&lt; EOT &gt;::operator()()</a>, and <a class="el" href="eo_combined_init_8h-source.html#l00074">eoCombinedInit&lt; EOT &gt;::operator()()</a>. </td>
</tr>
</table>
<a class="anchor" name="a14" doxytag="eoRng::choice"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" colspan="4">
template&lt;typename TYPE&gt; </td>
</tr>
<tr>
<td class="md" nowrap valign="top">const TYPE&amp; eoRng::choice </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">const std::vector&lt; TYPE &gt; &amp;&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>vec</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap> const<code> [inline]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Randomly select element from vector.
<p>
<dl compact><dt><b>Returns:</b></dt><dd>Uniformly chosen element from the vector. </dd></dl>
<p>
Definition at line <a class="el" href="eo_r_n_g_8h-source.html#l00247">247</a> of file <a class="el" href="eo_r_n_g_8h-source.html">eoRNG.h</a>.
<p>
References <a class="el" href="eo_r_n_g_8h-source.html#l00166">random()</a>. </td>
</tr>
</table>
<a class="anchor" name="a15" doxytag="eoRng::choice"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" colspan="4">
template&lt;typename TYPE&gt; </td>
</tr>
<tr>
<td class="md" nowrap valign="top">TYPE&amp; eoRng::choice </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">std::vector&lt; TYPE &gt; &amp;&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>vec</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap><code> [inline]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Randomly select element from vector.
<p>
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.<p>
Provide a version returning a non-const element reference.<p>
<dl compact><dt><b>Returns:</b></dt><dd>Uniformly chosen element from the vector.</dd></dl>
<dl compact><dt><b>Warning:</b></dt><dd>Changing the return value does alter the vector. </dd></dl>
<p>
Definition at line <a class="el" href="eo_r_n_g_8h-source.html#l00262">262</a> of file <a class="el" href="eo_r_n_g_8h-source.html">eoRNG.h</a>.
<p>
References <a class="el" href="eo_r_n_g_8h-source.html#l00166">random()</a>. </td>
</tr>
</table>
<a class="anchor" name="a16" doxytag="eoRng::printOn"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void eoRng::printOn </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">std::ostream &amp;&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>_os</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap> const<code> [inline, virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Write object.
<p>
It's called printOn since it prints the object on a stream. <dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>_os</em>&nbsp;</td><td>A std::ostream. </td></tr>
</table>
</dl>
<p>
Implements <a class="el" href="classeo_printable.html#a1">eoPrintable</a>.
<p>
Definition at line <a class="el" href="eo_r_n_g_8h-source.html#l00266">266</a> of file <a class="el" href="eo_r_n_g_8h-source.html">eoRNG.h</a>.
<p>
References <a class="el" href="eo_r_n_g_8h-source.html#l00349">state</a>. </td>
</tr>
</table>
<a class="anchor" name="a17" doxytag="eoRng::readFrom"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void eoRng::readFrom </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">std::istream &amp;&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>_is</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap><code> [inline, virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Read object.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>_is</em>&nbsp;</td><td>A std::istream. </td></tr>
</table>
</dl>
<dl compact><dt><b>Exceptions:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>runtime_std::exception</em>&nbsp;</td><td>If a valid object can't be read. </td></tr>
</table>
</dl>
<p>
Implements <a class="el" href="classeo_persistent.html#a1">eoPersistent</a>.
<p>
Definition at line <a class="el" href="eo_r_n_g_8h-source.html#l00277">277</a> of file <a class="el" href="eo_r_n_g_8h-source.html">eoRNG.h</a>.
<p>
References <a class="el" href="eo_r_n_g_8h-source.html#l00349">state</a>. </td>
</tr>
</table>
<a class="anchor" name="a18" doxytag="eoRng::className"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">std::string eoRng::className </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">void&nbsp;</td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap> const<code> [inline, virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Return the class id.
<p>
This should be redefined in each class. Only "leaf" classes can be non-virtual.<p>
Maarten: removed the default implementation as this proved to be too error-prone: I found several classes that had a typo in className (like classname), which would print <a class="el" href="classeo_object.html">eoObject</a> instead of their own. Having it pure will force the implementor to provide a name.
<p>
Implements <a class="el" href="classeo_object.html#a1">eoObject</a>.
<p>
Definition at line <a class="el" href="eo_r_n_g_8h-source.html#l00293">293</a> of file <a class="el" href="eo_r_n_g_8h-source.html">eoRNG.h</a>. </td>
</tr>
</table>
<a class="anchor" name="d3" doxytag="eoRng::operator="></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"><a class="el" href="classeo_rng.html">eoRng</a>&amp; eoRng::operator= </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">const <a class="el" href="classeo_rng.html">eoRng</a> &amp;&nbsp;</td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap><code> [private]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Assignmant operator.
<p>
<dl compact><dt><b>See also:</b></dt><dd>Copy constructor <a class="el" href="classeo_rng.html#d2">eoRng(const eoRng&amp;)</a>. </dd></dl>
</td>
</tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="eo_r_n_g_8h-source.html">eoRNG.h</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Thu Oct 19 05:06:55 2006 for EO by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address>
</body>
</html>