365 lines
53 KiB
HTML
365 lines
53 KiB
HTML
<!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
|
|
 <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 Page</span></a></li>
|
|
<li><a href="../../pages.xhtml"><span>Related 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 List</span></a></li>
|
|
<li><a href="../../globals.xhtml"><span>File 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"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </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> </div>
|
|
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">/*</span></div>
|
|
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <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> <span class="comment"> *</span></div>
|
|
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <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> <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> <span class="comment"> */</span></div>
|
|
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div>
|
|
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#include <stdio.h></span></div>
|
|
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#include <stdlib.h></span></div>
|
|
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#include <<a class="code" href="../../da/d66/string_8h.xhtml">string.h</a>></span></div>
|
|
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#include "<a class="code" href="../../d7/d10/_rand_8h.xhtml" title="[Internal] Random number generator">slikenet/Rand.h</a>"</span></div>
|
|
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div>
|
|
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">//</span></div>
|
|
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <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> <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> <span class="comment">// GCC at -O3 optimization so try your options and see what's best for you</span></div>
|
|
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">//</span></div>
|
|
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div>
|
|
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">//typedef unsigned int uint32;</span></div>
|
|
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div>
|
|
<div class="line"><a name="l00062"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#a0240ac851181b84ac374872dc5434ee4"> 62</a></span> <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> <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> <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> <span class="preprocessor"></span><span class="preprocessor">#define hiBit(u) ((u) & 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> <span class="preprocessor"></span><span class="preprocessor">#define loBit(u) ((u) & 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> <span class="preprocessor"></span><span class="preprocessor">#define loBits(u) ((u) & 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> <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> <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> <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> <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> <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> </div>
|
|
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="keyword">using namespace </span>SLNet;</div>
|
|
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div>
|
|
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <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> *&next, <span class="keywordtype">int</span> &left );</div>
|
|
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <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> *&next, <span class="keywordtype">int</span> &left );</div>
|
|
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <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> *&next, <span class="keywordtype">int</span> &left );</div>
|
|
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <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> *&next, <span class="keywordtype">int</span> &left );</div>
|
|
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <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> *&next, <span class="keywordtype">int</span> &left );</div>
|
|
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div>
|
|
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <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> <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> {</div>
|
|
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <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> }</div>
|
|
<div class="line"><a name="l00087"></a><span class="lineno"><a class="code" href="../../d7/d10/_rand_8h.xhtml#a52b4c380a6150ce7db938d246579c781"> 87</a></span> <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> {</div>
|
|
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <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> }</div>
|
|
<div class="line"><a name="l00091"></a><span class="lineno"><a class="code" href="../../d7/d10/_rand_8h.xhtml#a98d797c74449c6e22cbffb43e123a8cc"> 91</a></span> <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> {</div>
|
|
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <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> }</div>
|
|
<div class="line"><a name="l00095"></a><span class="lineno"><a class="code" href="../../d7/d10/_rand_8h.xhtml#ae7e667ae86b7729c6b86565b157085ee"> 95</a></span> <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> {</div>
|
|
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <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> }</div>
|
|
<div class="line"><a name="l00099"></a><span class="lineno"><a class="code" href="../../d7/d10/_rand_8h.xhtml#a4cb8c468a6fed51061e03bdb36f7e57d"> 99</a></span> <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> {</div>
|
|
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <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> }</div>
|
|
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div>
|
|
<div class="line"><a name="l00104"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#a86290618479835cad5f671ed697300d2"> 104</a></span> <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> *&next, <span class="keywordtype">int</span> &left ) <span class="comment">// Defined in cokus_c.c</span></div>
|
|
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> {</div>
|
|
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  (void) next;</div>
|
|
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div>
|
|
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="comment">//</span></div>
|
|
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <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>  <span class="comment">//</span></div>
|
|
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <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>  <span class="comment">//</span></div>
|
|
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="comment">// from Line 15 of Table 1, p. 106, Sec. 3.3.4 of Knuth's</span></div>
|
|
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <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>  <span class="comment">//</span></div>
|
|
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <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>  <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>  <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>  <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>  <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>  <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>  <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>  <span class="comment">//</span></div>
|
|
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <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>  <span class="comment">//</span></div>
|
|
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <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>  <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>  <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>  <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>  <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>  <span class="comment">// ...</span></div>
|
|
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="comment">//</span></div>
|
|
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <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>  <span class="comment">//</span></div>
|
|
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <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>  <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>  <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>  <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>  <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>  <span class="comment">// ...</span></div>
|
|
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="comment">//</span></div>
|
|
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">// The generator's potency (min. s>=0 with (69069-1)^s = 0 mod 2^32) is</span></div>
|
|
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <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>  <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>  <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>  <span class="comment">//</span></div>
|
|
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <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>  <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>  <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>  <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>  <span class="comment">// so-- that'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>  <span class="comment">//</span></div>
|
|
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div>
|
|
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> x = ( seed | 1U ) & 0xFFFFFFFFU, *s = state;</div>
|
|
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordtype">int</span> j;</div>
|
|
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div>
|
|
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <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>  *s++ = ( x *= 69069U ) & 0xFFFFFFFFU )</div>
|
|
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div>
|
|
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  ;</div>
|
|
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> }</div>
|
|
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div>
|
|
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div>
|
|
<div class="line"><a name="l00164"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#a178fd12bfa864f97ce60b0d06aff9dd8"> 164</a></span> <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> *&next, <span class="keywordtype">int</span> &left )</div>
|
|
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span> {</div>
|
|
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <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>  <span class="keywordtype">int</span> j;</div>
|
|
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div>
|
|
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">if</span> ( left < -1 )</div>
|
|
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <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> </div>
|
|
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  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> </div>
|
|
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <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>  * p0++ = *pM++ ^ ( <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a2ca02d83d9f95d1d37b56e20f9c30bd0">mixBits</a>( s0, s1 ) >> 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> </div>
|
|
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <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>  * p0++ = *pM++ ^ ( <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a2ca02d83d9f95d1d37b56e20f9c30bd0">mixBits</a>( s0, s1 ) >> 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> </div>
|
|
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  s1 = state[ 0 ], *p0 = *pM ^ ( <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a2ca02d83d9f95d1d37b56e20f9c30bd0">mixBits</a>( s0, s1 ) >> 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> </div>
|
|
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  s1 ^= ( s1 >> 11 );</div>
|
|
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div>
|
|
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  s1 ^= ( s1 << 7 ) & 0x9D2C5680U;</div>
|
|
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div>
|
|
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  s1 ^= ( s1 << 15 ) & 0xEFC60000U;</div>
|
|
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div>
|
|
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">return</span> ( s1 ^ ( s1 >> 18 ) );</div>
|
|
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span> }</div>
|
|
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div>
|
|
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div>
|
|
<div class="line"><a name="l00192"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#a90046cfad3cc4ee544377abb9d435f34"> 192</a></span> <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> *&next, <span class="keywordtype">int</span> &left )</div>
|
|
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span> {</div>
|
|
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y;</div>
|
|
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div>
|
|
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">if</span> ( --left < 0 )</div>
|
|
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <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> </div>
|
|
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  y = *next++;</div>
|
|
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div>
|
|
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  y ^= ( y >> 11 );</div>
|
|
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div>
|
|
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  y ^= ( y << 7 ) & 0x9D2C5680U;</div>
|
|
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </div>
|
|
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  y ^= ( y << 15 ) & 0xEFC60000U;</div>
|
|
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div>
|
|
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">return</span> ( y ^ ( y >> 18 ) );</div>
|
|
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div>
|
|
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <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>  <span class="comment">// return(y ^ (y >> 18)) % 32767;</span></div>
|
|
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span> }</div>
|
|
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div>
|
|
<div class="line"><a name="l00213"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#ade83f21ad5a606f79932ba432d97ced7"> 213</a></span> <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> *&next, <span class="keywordtype">int</span> &left )</div>
|
|
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span> {</div>
|
|
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <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>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> r;</div>
|
|
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">while</span> (bytes-offset>=<span class="keyword">sizeof</span>(r))</div>
|
|
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  {</div>
|
|
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  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>  memcpy((<span class="keywordtype">char</span>*)buffer+offset, &r, <span class="keyword">sizeof</span>(r));</div>
|
|
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  offset+=<span class="keyword">sizeof</span>(r);</div>
|
|
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div>
|
|
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div>
|
|
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  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>  memcpy((<span class="keywordtype">char</span>*)buffer+offset, &r, bytes-offset);</div>
|
|
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span> }</div>
|
|
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div>
|
|
<div class="line"><a name="l00228"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#ae1893c71ce567b99bb84624d323368e2"> 228</a></span> <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> *&next, <span class="keywordtype">int</span> &left )</div>
|
|
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span> {</div>
|
|
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <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> }</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> <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> {</div>
|
|
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <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> }</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> <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> {</div>
|
|
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span> }</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> <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> {</div>
|
|
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  printf(<span class="stringliteral">"%i\n"</span>,seed);</div>
|
|
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <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> }</div>
|
|
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span> </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> <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> {</div>
|
|
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <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> }</div>
|
|
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </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> <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> {</div>
|
|
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <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> }</div>
|
|
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </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> <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> {</div>
|
|
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <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> }</div>
|
|
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span> </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> <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> {</div>
|
|
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <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> }</div>
|
|
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span> </div>
|
|
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span> <span class="comment">/*</span></div>
|
|
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span> <span class="comment">int main(void)</span></div>
|
|
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="comment">{</span></div>
|
|
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span> <span class="comment">int j;</span></div>
|
|
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span> <span class="comment"></span></div>
|
|
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <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> <span class="comment"></span></div>
|
|
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span> <span class="comment">seedMT(4357U);</span></div>
|
|
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span> <span class="comment"></span></div>
|
|
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span> <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> <span class="comment"></span></div>
|
|
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span> <span class="comment">for(j=0; j<2002; j++)</span></div>
|
|
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span> <span class="comment">RAKNET_DEBUG_PRINTF(" %10lu%s", (unsigned int) randomMT(), (j%7)==6 ? "\n" : "");</span></div>
|
|
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span> <span class="comment"></span></div>
|
|
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span> <span class="comment">return(EXIT_SUCCESS);</span></div>
|
|
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span> <span class="comment">}</span></div>
|
|
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span> <span class="comment"></span></div>
|
|
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span> <span class="comment">*/</span></div>
|
|
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </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>
|