This commit is contained in:
2025-11-24 14:19:51 +05:30
commit f5c1412b28
6734 changed files with 1527575 additions and 0 deletions

View File

@ -0,0 +1,23 @@
var _rand_8cpp =
[
[ "hiBit", "da/d82/_rand_8cpp.xhtml#a6d98d2a0148d99119ae3cbb20af94e5e", null ],
[ "K", "da/d82/_rand_8cpp.xhtml#a97d832ae23af4f215e801e37e4f94254", null ],
[ "loBit", "da/d82/_rand_8cpp.xhtml#a0332b0aee92b25b0935bccc6f63a8e76", null ],
[ "loBits", "da/d82/_rand_8cpp.xhtml#a88fe688981b13216a7018a81c36083fe", null ],
[ "M", "da/d82/_rand_8cpp.xhtml#a52037c938e3c1b126c6277da5ca689d0", null ],
[ "mixBits", "da/d82/_rand_8cpp.xhtml#a2ca02d83d9f95d1d37b56e20f9c30bd0", null ],
[ "N", "da/d82/_rand_8cpp.xhtml#a0240ac851181b84ac374872dc5434ee4", null ],
[ "fillBufferMT", "da/d82/_rand_8cpp.xhtml#ade83f21ad5a606f79932ba432d97ced7", null ],
[ "fillBufferMT", "da/d82/_rand_8cpp.xhtml#a7bd85d5a007abde74d9352ab8de5957a", null ],
[ "frandomMT", "da/d82/_rand_8cpp.xhtml#ae1893c71ce567b99bb84624d323368e2", null ],
[ "frandomMT", "da/d82/_rand_8cpp.xhtml#a8a788011ff68195c8e0b7141673ac65b", null ],
[ "randomMT", "da/d82/_rand_8cpp.xhtml#a90046cfad3cc4ee544377abb9d435f34", null ],
[ "randomMT", "da/d82/_rand_8cpp.xhtml#ac2dc10672867234aa3f43e4a141b108e", null ],
[ "reloadMT", "da/d82/_rand_8cpp.xhtml#a178fd12bfa864f97ce60b0d06aff9dd8", null ],
[ "reloadMT", "da/d82/_rand_8cpp.xhtml#a2ced42ef4b294f7afb4a53f133ef169c", null ],
[ "seedMT", "da/d82/_rand_8cpp.xhtml#a86290618479835cad5f671ed697300d2", null ],
[ "seedMT", "da/d82/_rand_8cpp.xhtml#a11c1fa5e615d9aac605ef62e5977b7c2", null ],
[ "_left", "da/d82/_rand_8cpp.xhtml#acb374ecea613482f3af3db9f54e2abeb", null ],
[ "_next", "da/d82/_rand_8cpp.xhtml#ab66c6100edd468ed0617210c716b8438", null ],
[ "_state", "da/d82/_rand_8cpp.xhtml#a42e9057bdfbcc4910ccf9d6158cc11d9", null ]
];

View File

@ -0,0 +1,732 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>SLikeNet: Source/src/Rand.cpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/d82/_rand_8cpp.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">Rand.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;stdio.h&gt;</code><br/>
<code>#include &lt;stdlib.h&gt;</code><br/>
<code>#include &lt;<a class="el" href="../../da/d66/string_8h_source.xhtml">string.h</a>&gt;</code><br/>
<code>#include &quot;<a class="el" href="../../d7/d10/_rand_8h_source.xhtml">slikenet/Rand.h</a>&quot;</code><br/>
</div>
<p><a href="../../da/d82/_rand_8cpp_source.xhtml">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a0240ac851181b84ac374872dc5434ee4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#a0240ac851181b84ac374872dc5434ee4">N</a>&#160;&#160;&#160;(624)</td></tr>
<tr class="separator:a0240ac851181b84ac374872dc5434ee4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a52037c938e3c1b126c6277da5ca689d0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#a52037c938e3c1b126c6277da5ca689d0">M</a>&#160;&#160;&#160;(397)</td></tr>
<tr class="separator:a52037c938e3c1b126c6277da5ca689d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a97d832ae23af4f215e801e37e4f94254"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#a97d832ae23af4f215e801e37e4f94254">K</a>&#160;&#160;&#160;(0x9908B0DFU)</td></tr>
<tr class="separator:a97d832ae23af4f215e801e37e4f94254"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d98d2a0148d99119ae3cbb20af94e5e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#a6d98d2a0148d99119ae3cbb20af94e5e">hiBit</a>(u)&#160;&#160;&#160;((u) &amp; 0x80000000U)</td></tr>
<tr class="separator:a6d98d2a0148d99119ae3cbb20af94e5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0332b0aee92b25b0935bccc6f63a8e76"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#a0332b0aee92b25b0935bccc6f63a8e76">loBit</a>(u)&#160;&#160;&#160;((u) &amp; 0x00000001U)</td></tr>
<tr class="separator:a0332b0aee92b25b0935bccc6f63a8e76"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a88fe688981b13216a7018a81c36083fe"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#a88fe688981b13216a7018a81c36083fe">loBits</a>(u)&#160;&#160;&#160;((u) &amp; 0x7FFFFFFFU)</td></tr>
<tr class="separator:a88fe688981b13216a7018a81c36083fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2ca02d83d9f95d1d37b56e20f9c30bd0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#a2ca02d83d9f95d1d37b56e20f9c30bd0">mixBits</a>(u, v)&#160;&#160;&#160;(<a class="el" href="../../da/d82/_rand_8cpp.xhtml#a6d98d2a0148d99119ae3cbb20af94e5e">hiBit</a>(u)|<a class="el" href="../../da/d82/_rand_8cpp.xhtml#a88fe688981b13216a7018a81c36083fe">loBits</a>(v))</td></tr>
<tr class="separator:a2ca02d83d9f95d1d37b56e20f9c30bd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a86290618479835cad5f671ed697300d2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#a86290618479835cad5f671ed697300d2">seedMT</a> (unsigned int seed, unsigned int *state, unsigned int *&amp;next, int &amp;left)</td></tr>
<tr class="separator:a86290618479835cad5f671ed697300d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a178fd12bfa864f97ce60b0d06aff9dd8"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#a178fd12bfa864f97ce60b0d06aff9dd8">reloadMT</a> (unsigned int *state, unsigned int *&amp;next, int &amp;left)</td></tr>
<tr class="separator:a178fd12bfa864f97ce60b0d06aff9dd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a90046cfad3cc4ee544377abb9d435f34"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#a90046cfad3cc4ee544377abb9d435f34">randomMT</a> (unsigned int *state, unsigned int *&amp;next, int &amp;left)</td></tr>
<tr class="separator:a90046cfad3cc4ee544377abb9d435f34"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade83f21ad5a606f79932ba432d97ced7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#ade83f21ad5a606f79932ba432d97ced7">fillBufferMT</a> (void *buffer, unsigned int bytes, unsigned int *state, unsigned int *&amp;next, int &amp;left)</td></tr>
<tr class="separator:ade83f21ad5a606f79932ba432d97ced7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae1893c71ce567b99bb84624d323368e2"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#ae1893c71ce567b99bb84624d323368e2">frandomMT</a> (unsigned int *state, unsigned int *&amp;next, int &amp;left)</td></tr>
<tr class="separator:ae1893c71ce567b99bb84624d323368e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11c1fa5e615d9aac605ef62e5977b7c2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#a11c1fa5e615d9aac605ef62e5977b7c2">seedMT</a> (unsigned int seed)</td></tr>
<tr class="separator:a11c1fa5e615d9aac605ef62e5977b7c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2ced42ef4b294f7afb4a53f133ef169c"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#a2ced42ef4b294f7afb4a53f133ef169c">reloadMT</a> (void)</td></tr>
<tr class="separator:a2ced42ef4b294f7afb4a53f133ef169c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2dc10672867234aa3f43e4a141b108e"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#ac2dc10672867234aa3f43e4a141b108e">randomMT</a> (void)</td></tr>
<tr class="separator:ac2dc10672867234aa3f43e4a141b108e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a788011ff68195c8e0b7141673ac65b"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#a8a788011ff68195c8e0b7141673ac65b">frandomMT</a> (void)</td></tr>
<tr class="separator:a8a788011ff68195c8e0b7141673ac65b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7bd85d5a007abde74d9352ab8de5957a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#a7bd85d5a007abde74d9352ab8de5957a">fillBufferMT</a> (void *buffer, unsigned int bytes)</td></tr>
<tr class="separator:a7bd85d5a007abde74d9352ab8de5957a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a42e9057bdfbcc4910ccf9d6158cc11d9"><td class="memItemLeft" align="right" valign="top">static unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#a42e9057bdfbcc4910ccf9d6158cc11d9">_state</a> [<a class="el" href="../../da/d82/_rand_8cpp.xhtml#a0240ac851181b84ac374872dc5434ee4">N</a>+1]</td></tr>
<tr class="separator:a42e9057bdfbcc4910ccf9d6158cc11d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab66c6100edd468ed0617210c716b8438"><td class="memItemLeft" align="right" valign="top">static unsigned int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#ab66c6100edd468ed0617210c716b8438">_next</a></td></tr>
<tr class="separator:ab66c6100edd468ed0617210c716b8438"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb374ecea613482f3af3db9f54e2abeb"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#acb374ecea613482f3af3db9f54e2abeb">_left</a> = -1</td></tr>
<tr class="separator:acb374ecea613482f3af3db9f54e2abeb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="a6d98d2a0148d99119ae3cbb20af94e5e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define hiBit</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">u</td><td>)</td>
<td>&#160;&#160;&#160;((u) &amp; 0x80000000U)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00065">65</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
</div>
</div>
<a class="anchor" id="a97d832ae23af4f215e801e37e4f94254"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define K&#160;&#160;&#160;(0x9908B0DFU)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00064">64</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>Referenced by <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00164">reloadMT()</a>.</p>
</div>
</div>
<a class="anchor" id="a0332b0aee92b25b0935bccc6f63a8e76"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define loBit</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">u</td><td>)</td>
<td>&#160;&#160;&#160;((u) &amp; 0x00000001U)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00066">66</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>Referenced by <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00164">reloadMT()</a>.</p>
</div>
</div>
<a class="anchor" id="a88fe688981b13216a7018a81c36083fe"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define loBits</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">u</td><td>)</td>
<td>&#160;&#160;&#160;((u) &amp; 0x7FFFFFFFU)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00067">67</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
</div>
</div>
<a class="anchor" id="a52037c938e3c1b126c6277da5ca689d0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define M&#160;&#160;&#160;(397)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00063">63</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>Referenced by <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00164">reloadMT()</a>.</p>
</div>
</div>
<a class="anchor" id="a2ca02d83d9f95d1d37b56e20f9c30bd0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define mixBits</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">u, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">v&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td>&#160;&#160;&#160;(<a class="el" href="../../da/d82/_rand_8cpp.xhtml#a6d98d2a0148d99119ae3cbb20af94e5e">hiBit</a>(u)|<a class="el" href="../../da/d82/_rand_8cpp.xhtml#a88fe688981b13216a7018a81c36083fe">loBits</a>(v))</td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00068">68</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>Referenced by <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00164">reloadMT()</a>.</p>
</div>
</div>
<a class="anchor" id="a0240ac851181b84ac374872dc5434ee4"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define N&#160;&#160;&#160;(624)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Grabbed by Kevin from <a href="http://www.math.keio.ac.jp/~matumoto/cokus.c">http://www.math.keio.ac.jp/~matumoto/cokus.c</a> 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="#" onclick="location.href='mai'+'lto:'+'Cok'+'us'+'@ma'+'th'+'.wa'+'sh'+'ing'+'to'+'n.e'+'du'; return false;">Cokus<span style="display: none;">.nosp@m.</span>@mat<span style="display: none;">.nosp@m.</span>h.was<span style="display: none;">.nosp@m.</span>hing<span style="display: none;">.nosp@m.</span>ton.e<span style="display: none;">.nosp@m.</span>du</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>
<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>
<p>According to the URL <a href="http://www.math.keio.ac.jp/~matumoto/emt.html">http://www.math.keio.ac.jp/~matumoto/emt.html</a> (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 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>
<p>Licensing is free <a href="http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/elicense.html">http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/elicense.html</a></p>
<p>The code as Shawn received it included the following notice:</p>
<p>Copyright (C) 1997 Makoto Matsumoto and Takuji Nishimura. When you use this, send an e-mail to <a href="#" onclick="location.href='mai'+'lto:'+'mat'+'um'+'oto'+'@m'+'ath'+'.k'+'eio'+'.a'+'c.j'+'p'; return false;">matum<span style="display: none;">.nosp@m.</span>oto@<span style="display: none;">.nosp@m.</span>math.<span style="display: none;">.nosp@m.</span>keio<span style="display: none;">.nosp@m.</span>.ac.j<span style="display: none;">.nosp@m.</span>p</a> with an appropriate reference to your work.</p>
<p>It would be nice to CC: <a href="#" onclick="location.href='mai'+'lto:'+'Cok'+'us'+'@ma'+'th'+'.wa'+'sh'+'ing'+'to'+'n.e'+'du'; return false;">Cokus<span style="display: none;">.nosp@m.</span>@mat<span style="display: none;">.nosp@m.</span>h.was<span style="display: none;">.nosp@m.</span>hing<span style="display: none;">.nosp@m.</span>ton.e<span style="display: none;">.nosp@m.</span>du</a> when you write.</p>
<p>Note from SLikeSoft: The mail addresses here seem to be dead ends and we could not determine any current ways to contact the authors. </p>
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00062">62</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>Referenced by <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00164">reloadMT()</a>, and <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00104">seedMT()</a>.</p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ade83f21ad5a606f79932ba432d97ced7"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void fillBufferMT </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>buffer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>bytes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int *&#160;</td>
<td class="paramname"><em>state</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int *&amp;&#160;</td>
<td class="paramname"><em>next</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int &amp;&#160;</td>
<td class="paramname"><em>left</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00213">213</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>References <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00192">randomMT()</a>.</p>
<p>Referenced by <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00099">fillBufferMT()</a>, and <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00260">SLNet::RakNetRandom::FillBufferMT()</a>.</p>
</div>
</div>
<a class="anchor" id="a7bd85d5a007abde74d9352ab8de5957a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void fillBufferMT </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>buffer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>bytes</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Randomizes a buffer </p>
<dl class="section note"><dt>Note</dt><dd>not threadSafe, use an instance of RakNetRandom if necessary per thread </dd></dl>
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00099">99</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>References <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00072">_left</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00071">_next</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00070">_state</a>, and <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00213">fillBufferMT()</a>.</p>
</div>
</div>
<a class="anchor" id="ae1893c71ce567b99bb84624d323368e2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float frandomMT </td>
<td>(</td>
<td class="paramtype">unsigned int *&#160;</td>
<td class="paramname"><em>state</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int *&amp;&#160;</td>
<td class="paramname"><em>next</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int &amp;&#160;</td>
<td class="paramname"><em>left</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00228">228</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>References <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00192">randomMT()</a>.</p>
<p>Referenced by <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00095">frandomMT()</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00255">SLNet::RakNetRandom::FrandomMT()</a>, and <a class="el" href="../../d8/db6/_d_s___ordered_channel_heap_8h_source.xhtml#l00108">DataStructures::OrderedChannelHeap&lt; channel_key_type, heap_data_type, channel_key_comparison_func &gt;::PushAtHead()</a>.</p>
</div>
</div>
<a class="anchor" id="a8a788011ff68195c8e0b7141673ac65b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float frandomMT </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Gets a random float </p>
<dl class="section note"><dt>Note</dt><dd>not threadSafe, use an instance of RakNetRandom if necessary per thread </dd></dl>
<dl class="section return"><dt>Returns</dt><dd>0 to 1.0f, inclusive </dd></dl>
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00095">95</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>References <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00072">_left</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00071">_next</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00070">_state</a>, and <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00228">frandomMT()</a>.</p>
</div>
</div>
<a class="anchor" id="a90046cfad3cc4ee544377abb9d435f34"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int randomMT </td>
<td>(</td>
<td class="paramtype">unsigned int *&#160;</td>
<td class="paramname"><em>state</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int *&amp;&#160;</td>
<td class="paramname"><em>next</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int &amp;&#160;</td>
<td class="paramname"><em>left</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00192">192</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>References <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00164">reloadMT()</a>.</p>
<p>Referenced by <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00213">fillBufferMT()</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00228">frandomMT()</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00091">randomMT()</a>, and <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00250">SLNet::RakNetRandom::RandomMT()</a>.</p>
</div>
</div>
<a class="anchor" id="ac2dc10672867234aa3f43e4a141b108e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int randomMT </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Gets a random unsigned int </p>
<dl class="section note"><dt>Note</dt><dd>not threadSafe, use an instance of RakNetRandom if necessary per thread </dd></dl>
<dl class="section return"><dt>Returns</dt><dd>an integer random value. </dd></dl>
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00091">91</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>References <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00072">_left</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00071">_next</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00070">_state</a>, and <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00192">randomMT()</a>.</p>
</div>
</div>
<a class="anchor" id="a178fd12bfa864f97ce60b0d06aff9dd8"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int reloadMT </td>
<td>(</td>
<td class="paramtype">unsigned int *&#160;</td>
<td class="paramname"><em>state</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int *&amp;&#160;</td>
<td class="paramname"><em>next</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int &amp;&#160;</td>
<td class="paramname"><em>left</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00164">164</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>References <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00064">K</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00066">loBit</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00063">M</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00068">mixBits</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00062">N</a>, and <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00104">seedMT()</a>.</p>
<p>Referenced by <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00192">randomMT()</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00087">reloadMT()</a>, and <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00245">SLNet::RakNetRandom::ReloadMT()</a>.</p>
</div>
</div>
<a class="anchor" id="a2ced42ef4b294f7afb4a53f133ef169c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int reloadMT </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00087">87</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>References <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00072">_left</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00071">_next</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00070">_state</a>, and <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00164">reloadMT()</a>.</p>
</div>
</div>
<a class="anchor" id="a86290618479835cad5f671ed697300d2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void seedMT </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>seed</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int *&#160;</td>
<td class="paramname"><em>state</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int *&amp;&#160;</td>
<td class="paramname"><em>next</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int &amp;&#160;</td>
<td class="paramname"><em>left</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00104">104</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>References <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00062">N</a>.</p>
<p>Referenced by <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00164">reloadMT()</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00083">seedMT()</a>, and <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00239">SLNet::RakNetRandom::SeedMT()</a>.</p>
</div>
</div>
<a class="anchor" id="a11c1fa5e615d9aac605ef62e5977b7c2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void seedMT </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>seed</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialise seed for Random Generator </p>
<dl class="section note"><dt>Note</dt><dd>not threadSafe, use an instance of RakNetRandom if necessary per thread </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">seed</td><td>The seed value for the random number generator. </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00083">83</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>References <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00072">_left</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00071">_next</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00070">_state</a>, and <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00104">seedMT()</a>.</p>
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a class="anchor" id="acb374ecea613482f3af3db9f54e2abeb"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int _left = -1</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00072">72</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>Referenced by <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00099">fillBufferMT()</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00095">frandomMT()</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00091">randomMT()</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00087">reloadMT()</a>, and <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00083">seedMT()</a>.</p>
</div>
</div>
<a class="anchor" id="ab66c6100edd468ed0617210c716b8438"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int* _next</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00071">71</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>Referenced by <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00099">fillBufferMT()</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00095">frandomMT()</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00091">randomMT()</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00087">reloadMT()</a>, and <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00083">seedMT()</a>.</p>
</div>
</div>
<a class="anchor" id="a42e9057bdfbcc4910ccf9d6158cc11d9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int _state[<a class="el" href="../../da/d82/_rand_8cpp.xhtml#a0240ac851181b84ac374872dc5434ee4">N</a>+1]</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00070">70</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>Referenced by <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00099">fillBufferMT()</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00095">frandomMT()</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00091">randomMT()</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00087">reloadMT()</a>, and <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00083">seedMT()</a>.</p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../da/d82/_rand_8cpp.xhtml">Rand.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,364 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>SLikeNet: Source/src/Rand.cpp Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/d82/_rand_8cpp_source.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Rand.cpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../da/d82/_rand_8cpp.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> * Modified work: Copyright (c) 2016-2017, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> * license found in the license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#include &lt;stdio.h&gt;</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../da/d66/string_8h.xhtml">string.h</a>&gt;</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d7/d10/_rand_8h.xhtml" title="[Internal] Random number generator">slikenet/Rand.h</a>&quot;</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment">// uint32 must be an unsigned integer type capable of holding at least 32</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment">// bits; exactly 32 should be fastest, but 64 is better on an Alpha with</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment">// GCC at -O3 optimization so try your options and see what&#39;s best for you</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment">//typedef unsigned int uint32;</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div>
<div class="line"><a name="l00062"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#a0240ac851181b84ac374872dc5434ee4"> 62</a></span>&#160;<span class="preprocessor">#define N (624) // length of state vector</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#a52037c938e3c1b126c6277da5ca689d0"> 63</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define M (397) // a period parameter</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#a97d832ae23af4f215e801e37e4f94254"> 64</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define K (0x9908B0DFU) // a magic constant</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#a6d98d2a0148d99119ae3cbb20af94e5e"> 65</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define hiBit(u) ((u) &amp; 0x80000000U) // mask all but highest bit of u</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#a0332b0aee92b25b0935bccc6f63a8e76"> 66</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define loBit(u) ((u) &amp; 0x00000001U) // mask all but lowest bit of u</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#a88fe688981b13216a7018a81c36083fe"> 67</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define loBits(u) ((u) &amp; 0x7FFFFFFFU) // mask the highest bit of u</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#a2ca02d83d9f95d1d37b56e20f9c30bd0"> 68</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define mixBits(u, v) (hiBit(u)|loBits(v)) // move hi bit of u to hi bit of v</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00070"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#a42e9057bdfbcc4910ccf9d6158cc11d9"> 70</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a42e9057bdfbcc4910ccf9d6158cc11d9">_state</a>[ <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a0240ac851181b84ac374872dc5434ee4">N</a> + 1 ]; <span class="comment">// state vector + 1 extra to not violate ANSI C</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#ab66c6100edd468ed0617210c716b8438"> 71</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *<a class="code" href="../../da/d82/_rand_8cpp.xhtml#ab66c6100edd468ed0617210c716b8438">_next</a>; <span class="comment">// next random value is computed from here</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#acb374ecea613482f3af3db9f54e2abeb"> 72</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#acb374ecea613482f3af3db9f54e2abeb">_left</a> = -1; <span class="comment">// can *next++ this many times before reloading</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="keyword">using namespace </span>SLNet;</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a86290618479835cad5f671ed697300d2">seedMT</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> seed, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *state, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *&amp;next, <span class="keywordtype">int</span> &amp;left );</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a178fd12bfa864f97ce60b0d06aff9dd8">reloadMT</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *state, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *&amp;next, <span class="keywordtype">int</span> &amp;left );</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a90046cfad3cc4ee544377abb9d435f34">randomMT</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *state, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *&amp;next, <span class="keywordtype">int</span> &amp;left );</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ade83f21ad5a606f79932ba432d97ced7">fillBufferMT</a>( <span class="keywordtype">void</span> *buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bytes, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *state, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *&amp;next, <span class="keywordtype">int</span> &amp;left );</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="keywordtype">float</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ae1893c71ce567b99bb84624d323368e2">frandomMT</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *state, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *&amp;next, <span class="keywordtype">int</span> &amp;left );</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment">// Uses global vars</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"><a class="code" href="../../d7/d10/_rand_8h.xhtml#ab906455689fe29d53488741dcb85144c"> 83</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a86290618479835cad5f671ed697300d2">seedMT</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> seed )</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;{</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a86290618479835cad5f671ed697300d2">seedMT</a>(seed, <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a42e9057bdfbcc4910ccf9d6158cc11d9">_state</a>, <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ab66c6100edd468ed0617210c716b8438">_next</a>, <a class="code" href="../../da/d82/_rand_8cpp.xhtml#acb374ecea613482f3af3db9f54e2abeb">_left</a>);</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;}</div>
<div class="line"><a name="l00087"></a><span class="lineno"><a class="code" href="../../d7/d10/_rand_8h.xhtml#a52b4c380a6150ce7db938d246579c781"> 87</a></span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a178fd12bfa864f97ce60b0d06aff9dd8">reloadMT</a>( <span class="keywordtype">void</span> )</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;{</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a178fd12bfa864f97ce60b0d06aff9dd8">reloadMT</a>(<a class="code" href="../../da/d82/_rand_8cpp.xhtml#a42e9057bdfbcc4910ccf9d6158cc11d9">_state</a>, <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ab66c6100edd468ed0617210c716b8438">_next</a>, <a class="code" href="../../da/d82/_rand_8cpp.xhtml#acb374ecea613482f3af3db9f54e2abeb">_left</a>);</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;}</div>
<div class="line"><a name="l00091"></a><span class="lineno"><a class="code" href="../../d7/d10/_rand_8h.xhtml#a98d797c74449c6e22cbffb43e123a8cc"> 91</a></span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a90046cfad3cc4ee544377abb9d435f34">randomMT</a>( <span class="keywordtype">void</span> )</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;{</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a90046cfad3cc4ee544377abb9d435f34">randomMT</a>(<a class="code" href="../../da/d82/_rand_8cpp.xhtml#a42e9057bdfbcc4910ccf9d6158cc11d9">_state</a>, <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ab66c6100edd468ed0617210c716b8438">_next</a>, <a class="code" href="../../da/d82/_rand_8cpp.xhtml#acb374ecea613482f3af3db9f54e2abeb">_left</a>);</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;}</div>
<div class="line"><a name="l00095"></a><span class="lineno"><a class="code" href="../../d7/d10/_rand_8h.xhtml#ae7e667ae86b7729c6b86565b157085ee"> 95</a></span>&#160;<span class="keywordtype">float</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ae1893c71ce567b99bb84624d323368e2">frandomMT</a>( <span class="keywordtype">void</span> )</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;{</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ae1893c71ce567b99bb84624d323368e2">frandomMT</a>(<a class="code" href="../../da/d82/_rand_8cpp.xhtml#a42e9057bdfbcc4910ccf9d6158cc11d9">_state</a>, <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ab66c6100edd468ed0617210c716b8438">_next</a>, <a class="code" href="../../da/d82/_rand_8cpp.xhtml#acb374ecea613482f3af3db9f54e2abeb">_left</a>);</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;}</div>
<div class="line"><a name="l00099"></a><span class="lineno"><a class="code" href="../../d7/d10/_rand_8h.xhtml#a4cb8c468a6fed51061e03bdb36f7e57d"> 99</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ade83f21ad5a606f79932ba432d97ced7">fillBufferMT</a>( <span class="keywordtype">void</span> *buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bytes )</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;{</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ade83f21ad5a606f79932ba432d97ced7">fillBufferMT</a>(buffer, bytes, <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a42e9057bdfbcc4910ccf9d6158cc11d9">_state</a>, <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ab66c6100edd468ed0617210c716b8438">_next</a>, <a class="code" href="../../da/d82/_rand_8cpp.xhtml#acb374ecea613482f3af3db9f54e2abeb">_left</a>);</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;}</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div>
<div class="line"><a name="l00104"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#a86290618479835cad5f671ed697300d2"> 104</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a86290618479835cad5f671ed697300d2">seedMT</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> seed, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *state, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *&amp;next, <span class="keywordtype">int</span> &amp;left ) <span class="comment">// Defined in cokus_c.c</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;{</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; (void) next;</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="comment">// We initialize state[0..(N-1)] via the generator</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="comment">// x_new = (69069 * x_old) mod 2^32</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="comment">// from Line 15 of Table 1, p. 106, Sec. 3.3.4 of Knuth&#39;s</span></div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="comment">// _The Art of Computer Programming_, Volume 2, 3rd ed.</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">// Notes (SJC): I do not know what the initial state requirements</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="comment">// of the Mersenne Twister are, but it seems this seeding generator</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="comment">// could be better. It achieves the maximum period for its modulus</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="comment">// (2^30) iff x_initial is odd (p. 20-21, Sec. 3.2.1.2, Knuth); if</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="comment">// x_initial can be even, you have sequences like 0, 0, 0, ...;</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="comment">// 2^31, 2^31, 2^31, ...; 2^30, 2^30, 2^30, ...; 2^29, 2^29 + 2^31,</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="comment">// 2^29, 2^29 + 2^31, ..., etc. so I force seed to be odd below.</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="comment">// Even if x_initial is odd, if x_initial is 1 mod 4 then</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="comment">// the lowest bit of x is always 1,</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="comment">// the next-to-lowest bit of x is always 0,</span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="comment">// the 2nd-from-lowest bit of x alternates ... 0 1 0 1 0 1 0 1 ... ,</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="comment">// the 3rd-from-lowest bit of x 4-cycles ... 0 1 1 0 0 1 1 0 ... ,</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="comment">// the 4th-from-lowest bit of x has the 8-cycle ... 0 0 0 1 1 1 1 0 ... ,</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="comment">// ...</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="comment">// and if x_initial is 3 mod 4 then</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="comment">// the lowest bit of x is always 1,</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="comment">// the next-to-lowest bit of x is always 1,</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="comment">// the 2nd-from-lowest bit of x alternates ... 0 1 0 1 0 1 0 1 ... ,</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="comment">// the 3rd-from-lowest bit of x 4-cycles ... 0 0 1 1 0 0 1 1 ... ,</span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="comment">// the 4th-from-lowest bit of x has the 8-cycle ... 0 0 1 1 1 1 0 0 ... ,</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="comment">// ...</span></div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="comment">// The generator&#39;s potency (min. s&gt;=0 with (69069-1)^s = 0 mod 2^32) is</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="comment">// 16, which seems to be alright by p. 25, Sec. 3.2.1.3 of Knuth. It</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="comment">// also does well in the dimension 2..5 spectral tests, but it could be</span></div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="comment">// better in dimension 6 (Line 15, Table 1, p. 106, Sec. 3.3.4, Knuth).</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="comment">// Note that the random number user does not see the values generated</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="comment">// here directly since reloadMT() will always munge them first, so maybe</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="comment">// none of all of this matters. In fact, the seed values made here could</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="comment">// even be extra-special desirable if the Mersenne Twister theory says</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="comment">// so-- that&#39;s why the only change I made is to restrict to odd seeds.</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> x = ( seed | 1U ) &amp; 0xFFFFFFFFU, *s = state;</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordtype">int</span> j;</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">for</span> ( left = 0, *s++ = x, j = <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a0240ac851181b84ac374872dc5434ee4">N</a>; --j;</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; *s++ = ( x *= 69069U ) &amp; 0xFFFFFFFFU )</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; ;</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;}</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div>
<div class="line"><a name="l00164"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#a178fd12bfa864f97ce60b0d06aff9dd8"> 164</a></span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a178fd12bfa864f97ce60b0d06aff9dd8">reloadMT</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *state, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *&amp;next, <span class="keywordtype">int</span> &amp;left )</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;{</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> * p0 = state, *p2 = state + 2, *pM = state + <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a52037c938e3c1b126c6277da5ca689d0">M</a>, s0, s1;</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordtype">int</span> j;</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">if</span> ( left &lt; -1 )</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a86290618479835cad5f671ed697300d2">seedMT</a>( 4357U );</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; left = <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a0240ac851181b84ac374872dc5434ee4">N</a> - 1, next = state + 1;</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">for</span> ( s0 = state[ 0 ], s1 = state[ 1 ], j = <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a0240ac851181b84ac374872dc5434ee4">N</a> - M + 1; --j; s0 = s1, s1 = *p2++ )</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; * p0++ = *pM++ ^ ( <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a2ca02d83d9f95d1d37b56e20f9c30bd0">mixBits</a>( s0, s1 ) &gt;&gt; 1 ) ^ ( <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a0332b0aee92b25b0935bccc6f63a8e76">loBit</a>( s1 ) ? <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a97d832ae23af4f215e801e37e4f94254">K</a> : 0U );</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">for</span> ( pM = state, j = M; --j; s0 = s1, s1 = *p2++ )</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; * p0++ = *pM++ ^ ( <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a2ca02d83d9f95d1d37b56e20f9c30bd0">mixBits</a>( s0, s1 ) &gt;&gt; 1 ) ^ ( <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a0332b0aee92b25b0935bccc6f63a8e76">loBit</a>( s1 ) ? <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a97d832ae23af4f215e801e37e4f94254">K</a> : 0U );</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; s1 = state[ 0 ], *p0 = *pM ^ ( <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a2ca02d83d9f95d1d37b56e20f9c30bd0">mixBits</a>( s0, s1 ) &gt;&gt; 1 ) ^ ( <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a0332b0aee92b25b0935bccc6f63a8e76">loBit</a>( s1 ) ? <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a97d832ae23af4f215e801e37e4f94254">K</a> : 0U );</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; s1 ^= ( s1 &gt;&gt; 11 );</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; s1 ^= ( s1 &lt;&lt; 7 ) &amp; 0x9D2C5680U;</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; s1 ^= ( s1 &lt;&lt; 15 ) &amp; 0xEFC60000U;</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">return</span> ( s1 ^ ( s1 &gt;&gt; 18 ) );</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;}</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;</div>
<div class="line"><a name="l00192"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#a90046cfad3cc4ee544377abb9d435f34"> 192</a></span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a90046cfad3cc4ee544377abb9d435f34">randomMT</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *state, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *&amp;next, <span class="keywordtype">int</span> &amp;left )</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;{</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y;</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">if</span> ( --left &lt; 0 )</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">return</span> ( <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a178fd12bfa864f97ce60b0d06aff9dd8">reloadMT</a>(state, next, left) );</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; y = *next++;</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; y ^= ( y &gt;&gt; 11 );</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; y ^= ( y &lt;&lt; 7 ) &amp; 0x9D2C5680U;</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; y ^= ( y &lt;&lt; 15 ) &amp; 0xEFC60000U;</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">return</span> ( y ^ ( y &gt;&gt; 18 ) );</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="comment">// This change made so the value returned is in the same range as what rand() returns</span></div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="comment">// return(y ^ (y &gt;&gt; 18)) % 32767;</span></div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;}</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div>
<div class="line"><a name="l00213"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#ade83f21ad5a606f79932ba432d97ced7"> 213</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ade83f21ad5a606f79932ba432d97ced7">fillBufferMT</a>( <span class="keywordtype">void</span> *buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bytes, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *state, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *&amp;next, <span class="keywordtype">int</span> &amp;left )</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;{</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset=0;</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> r;</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">while</span> (bytes-offset&gt;=<span class="keyword">sizeof</span>(r))</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; {</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; r = <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a90046cfad3cc4ee544377abb9d435f34">randomMT</a>(state, next, left);</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; memcpy((<span class="keywordtype">char</span>*)buffer+offset, &amp;r, <span class="keyword">sizeof</span>(r));</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; offset+=<span class="keyword">sizeof</span>(r);</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; }</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; r = <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a90046cfad3cc4ee544377abb9d435f34">randomMT</a>(state, next, left);</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; memcpy((<span class="keywordtype">char</span>*)buffer+offset, &amp;r, bytes-offset);</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;}</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div>
<div class="line"><a name="l00228"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#ae1893c71ce567b99bb84624d323368e2"> 228</a></span>&#160;<span class="keywordtype">float</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ae1893c71ce567b99bb84624d323368e2">frandomMT</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *state, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *&amp;next, <span class="keywordtype">int</span> &amp;left )</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;{</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">return</span> ( <span class="keywordtype">float</span> ) ( ( double ) <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a90046cfad3cc4ee544377abb9d435f34">randomMT</a>(state, next, left) / 4294967296.0 );</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;}</div>
<div class="line"><a name="l00232"></a><span class="lineno"><a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a12204e9bef5f72a5d3e2498097740ea0"> 232</a></span>&#160;<a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a12204e9bef5f72a5d3e2498097740ea0">RakNetRandom::RakNetRandom</a>()</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;{</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a834d8455dfa7dc94577bac72a987afdd">left</a>=-1;</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;}</div>
<div class="line"><a name="l00236"></a><span class="lineno"><a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a0dabc78664544c7da499b2d8af7b0d17"> 236</a></span>&#160;<a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a0dabc78664544c7da499b2d8af7b0d17">RakNetRandom::~RakNetRandom</a>()</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;{</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;}</div>
<div class="line"><a name="l00239"></a><span class="lineno"><a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a2d1a9a274688d7fd1554607d46cc5296"> 239</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a2d1a9a274688d7fd1554607d46cc5296">RakNetRandom::SeedMT</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> seed )</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;{</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; printf(<span class="stringliteral">&quot;%i\n&quot;</span>,seed);</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a86290618479835cad5f671ed697300d2">seedMT</a>(seed, <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#aba4f23edc22bef0a75c33e70382d222e">state</a>, <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a761ead9b3dba5d701104d3b888216afa">next</a>, <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a834d8455dfa7dc94577bac72a987afdd">left</a>);</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;}</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div>
<div class="line"><a name="l00245"></a><span class="lineno"><a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a164966abc7632dc8d91b9f2f63c0565e"> 245</a></span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a164966abc7632dc8d91b9f2f63c0565e">RakNetRandom::ReloadMT</a>( <span class="keywordtype">void</span> )</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;{</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a178fd12bfa864f97ce60b0d06aff9dd8">reloadMT</a>(<a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#aba4f23edc22bef0a75c33e70382d222e">state</a>, <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a761ead9b3dba5d701104d3b888216afa">next</a>, <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a834d8455dfa7dc94577bac72a987afdd">left</a>);</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;}</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div>
<div class="line"><a name="l00250"></a><span class="lineno"><a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#ac2661b0600af7f2a6f1d904c553c31bb"> 250</a></span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#ac2661b0600af7f2a6f1d904c553c31bb">RakNetRandom::RandomMT</a>( <span class="keywordtype">void</span> )</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;{</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a90046cfad3cc4ee544377abb9d435f34">randomMT</a>(<a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#aba4f23edc22bef0a75c33e70382d222e">state</a>, <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a761ead9b3dba5d701104d3b888216afa">next</a>, <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a834d8455dfa7dc94577bac72a987afdd">left</a>);</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;}</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div>
<div class="line"><a name="l00255"></a><span class="lineno"><a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a9ea13181c9510b9aeac3a53fb3eea7f3"> 255</a></span>&#160;<span class="keywordtype">float</span> <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a9ea13181c9510b9aeac3a53fb3eea7f3">RakNetRandom::FrandomMT</a>( <span class="keywordtype">void</span> )</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;{</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ae1893c71ce567b99bb84624d323368e2">frandomMT</a>(<a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#aba4f23edc22bef0a75c33e70382d222e">state</a>, <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a761ead9b3dba5d701104d3b888216afa">next</a>, <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a834d8455dfa7dc94577bac72a987afdd">left</a>);</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;}</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div>
<div class="line"><a name="l00260"></a><span class="lineno"><a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a0867ce7343610c295be7f1bddc6681f7"> 260</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a0867ce7343610c295be7f1bddc6681f7">RakNetRandom::FillBufferMT</a>( <span class="keywordtype">void</span> *buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bytes )</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;{</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ade83f21ad5a606f79932ba432d97ced7">fillBufferMT</a>(buffer, bytes, <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#aba4f23edc22bef0a75c33e70382d222e">state</a>, <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a761ead9b3dba5d701104d3b888216afa">next</a>, <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a834d8455dfa7dc94577bac72a987afdd">left</a>);</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;}</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="comment">int main(void)</span></div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="comment">{</span></div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="comment">int j;</span></div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="comment">// you can seed with any uint32, but the best are odds in 0..(2^32 - 1)</span></div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="comment">seedMT(4357U);</span></div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="comment">// print the first 2,002 random numbers seven to a line as an example</span></div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="comment">for(j=0; j&lt;2002; j++)</span></div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="comment">RAKNET_DEBUG_PRINTF(&quot; %10lu%s&quot;, (unsigned int) randomMT(), (j%7)==6 ? &quot;\n&quot; : &quot;&quot;);</span></div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="comment">return(EXIT_SUCCESS);</span></div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="comment">}</span></div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;</div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../da/d82/_rand_8cpp.xhtml">Rand.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:47 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>