[353] | 1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
---|
| 2 | <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> |
---|
| 3 | <title>mixpp: random.h Source File</title> |
---|
| 4 | <link href="tabs.css" rel="stylesheet" type="text/css"> |
---|
| 5 | <link href="doxygen.css" rel="stylesheet" type="text/css"> |
---|
| 6 | </head><body> |
---|
| 7 | <!-- Generated by Doxygen 1.5.8 --> |
---|
| 8 | <script type="text/javascript"> |
---|
| 9 | <!-- |
---|
| 10 | function changeDisplayState (e){ |
---|
| 11 | var num=this.id.replace(/[^[0-9]/g,''); |
---|
| 12 | var button=this.firstChild; |
---|
| 13 | var sectionDiv=document.getElementById('dynsection'+num); |
---|
| 14 | if (sectionDiv.style.display=='none'||sectionDiv.style.display==''){ |
---|
| 15 | sectionDiv.style.display='block'; |
---|
| 16 | button.src='open.gif'; |
---|
| 17 | }else{ |
---|
| 18 | sectionDiv.style.display='none'; |
---|
| 19 | button.src='closed.gif'; |
---|
| 20 | } |
---|
| 21 | } |
---|
| 22 | function initDynSections(){ |
---|
| 23 | var divs=document.getElementsByTagName('div'); |
---|
| 24 | var sectionCounter=1; |
---|
| 25 | for(var i=0;i<divs.length-1;i++){ |
---|
| 26 | if(divs[i].className=='dynheader'&&divs[i+1].className=='dynsection'){ |
---|
| 27 | var header=divs[i]; |
---|
| 28 | var section=divs[i+1]; |
---|
| 29 | var button=header.firstChild; |
---|
| 30 | if (button!='IMG'){ |
---|
| 31 | divs[i].insertBefore(document.createTextNode(' '),divs[i].firstChild); |
---|
| 32 | button=document.createElement('img'); |
---|
| 33 | divs[i].insertBefore(button,divs[i].firstChild); |
---|
| 34 | } |
---|
| 35 | header.style.cursor='pointer'; |
---|
| 36 | header.onclick=changeDisplayState; |
---|
| 37 | header.id='dynheader'+sectionCounter; |
---|
| 38 | button.src='closed.gif'; |
---|
| 39 | section.id='dynsection'+sectionCounter; |
---|
| 40 | section.style.display='none'; |
---|
| 41 | section.style.marginLeft='14px'; |
---|
| 42 | sectionCounter++; |
---|
| 43 | } |
---|
| 44 | } |
---|
| 45 | } |
---|
| 46 | window.onload = initDynSections; |
---|
| 47 | --> |
---|
| 48 | </script> |
---|
| 49 | <div class="navigation" id="top"> |
---|
| 50 | <div class="tabs"> |
---|
| 51 | <ul> |
---|
| 52 | <li><a href="main.html"><span>Main Page</span></a></li> |
---|
| 53 | <li><a href="pages.html"><span>Related Pages</span></a></li> |
---|
| 54 | <li><a href="modules.html"><span>Modules</span></a></li> |
---|
| 55 | <li><a href="annotated.html"><span>Classes</span></a></li> |
---|
| 56 | <li class="current"><a href="files.html"><span>Files</span></a></li> |
---|
| 57 | </ul> |
---|
| 58 | </div> |
---|
| 59 | <div class="tabs"> |
---|
| 60 | <ul> |
---|
| 61 | <li><a href="files.html"><span>File List</span></a></li> |
---|
| 62 | <li><a href="globals.html"><span>File Members</span></a></li> |
---|
| 63 | </ul> |
---|
| 64 | </div> |
---|
| 65 | <h1>random.h</h1><a href="random_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 |
---|
| 66 | <a name="l00029"></a>00029 <span class="preprocessor">#ifndef RANDOM_H</span> |
---|
| 67 | <a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#define RANDOM_H</span> |
---|
| 68 | <a name="l00031"></a>00031 <span class="preprocessor"></span> |
---|
| 69 | <a name="l00032"></a>00032 <span class="preprocessor">#include <<a class="code" href="random__dsfmt_8h.html" title="C++ implementation of dSFMT random number generator.">itpp/base/random_dsfmt.h</a>></span> |
---|
| 70 | <a name="l00033"></a>00033 <span class="preprocessor">#include <<a class="code" href="operators_8h.html" title="Definitions of operators for vectors and matricies of different types.">itpp/base/operators.h</a>></span> |
---|
| 71 | <a name="l00034"></a>00034 |
---|
| 72 | <a name="l00035"></a>00035 |
---|
| 73 | <a name="l00036"></a>00036 <span class="keyword">namespace </span>itpp |
---|
| 74 | <a name="l00037"></a>00037 { |
---|
| 75 | <a name="l00038"></a>00038 |
---|
| 76 | <a name="l00040"></a>00040 |
---|
| 77 | <a name="l00050"></a><a class="code" href="group__randgen.html#g34eae65e1f1e6c0faced9e9d64eb67b4">00050</a> <span class="keyword">typedef</span> <a class="code" href="classitpp_1_1DSFMT.html" title="C++ implementation of dSFMT random number generatorThe DSFMT class implements parts...">DSFMT_19937_RNG</a> <a class="code" href="classitpp_1_1DSFMT.html" title="C++ implementation of dSFMT random number generatorThe DSFMT class implements parts...">Random_Generator</a>; |
---|
| 78 | <a name="l00051"></a>00051 |
---|
| 79 | <a name="l00054"></a>00054 |
---|
| 80 | <a name="l00056"></a>00056 <span class="keywordtype">void</span> <a class="code" href="group__randgen.html#g2dee3c934eeb7a720cb72316fd959c12" title="Set the seed of the Global Random Number Generator to the same as last time.">RNG_reset</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> seed); |
---|
| 81 | <a name="l00058"></a>00058 <span class="keywordtype">void</span> <a class="code" href="group__randgen.html#g2dee3c934eeb7a720cb72316fd959c12" title="Set the seed of the Global Random Number Generator to the same as last time.">RNG_reset</a>(); |
---|
| 82 | <a name="l00060"></a>00060 <span class="keywordtype">void</span> <a class="code" href="group__randgen.html#gdf5dd6e879881b651896c213e6efd3ba" title="Set a random seed for the Global Random Number Generator.">RNG_randomize</a>(); |
---|
| 83 | <a name="l00062"></a>00062 <span class="keywordtype">void</span> <a class="code" href="group__randgen.html#g3bf0d34015b9f7de0233543518527571" title="Save the current state of the generator in a vector.">RNG_get_state</a>(ivec &state); |
---|
| 84 | <a name="l00064"></a>00064 <span class="keywordtype">void</span> <a class="code" href="group__randgen.html#g461aec689ec83188592784d97a2b4944" title="Resume the state of the generator from previously saved vector.">RNG_set_state</a>(<span class="keyword">const</span> ivec &state); |
---|
| 85 | <a name="l00066"></a>00066 |
---|
| 86 | <a name="l00071"></a><a class="code" href="classitpp_1_1Bernoulli__RNG.html">00071</a> <span class="keyword">class </span><a class="code" href="classitpp_1_1Bernoulli__RNG.html" title="Bernoulli distribution.">Bernoulli_RNG</a> |
---|
| 87 | <a name="l00072"></a>00072 { |
---|
| 88 | <a name="l00073"></a>00073 <span class="keyword">public</span>: |
---|
| 89 | <a name="l00075"></a><a class="code" href="classitpp_1_1Bernoulli__RNG.html#cf2501213ceb10bc92bc694b63196189">00075</a> <a class="code" href="classitpp_1_1Bernoulli__RNG.html#cf2501213ceb10bc92bc694b63196189" title="Binary source with probability prob for a 1.">Bernoulli_RNG</a>(<span class="keywordtype">double</span> prob) { <a class="code" href="classitpp_1_1Bernoulli__RNG.html#56a09d28ad530f58f00450b23bf643c9" title="set the probability">setup</a>(prob); } |
---|
| 90 | <a name="l00077"></a><a class="code" href="classitpp_1_1Bernoulli__RNG.html#17e3d41e1796eab6270bddbca5ea98dc">00077</a> <a class="code" href="classitpp_1_1Bernoulli__RNG.html#17e3d41e1796eab6270bddbca5ea98dc" title="Binary source with probability prob for a 1.">Bernoulli_RNG</a>() { p = 0.5; } |
---|
| 91 | <a name="l00079"></a><a class="code" href="classitpp_1_1Bernoulli__RNG.html#56a09d28ad530f58f00450b23bf643c9">00079</a> <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Bernoulli__RNG.html#56a09d28ad530f58f00450b23bf643c9" title="set the probability">setup</a>(<span class="keywordtype">double</span> prob) { |
---|
| 92 | <a name="l00080"></a>00080 <a class="code" href="group__errorhandlingfunc.html#gd5c34b291e5018534fd2344486e2b5a1" title="Abort if t is not true.">it_assert</a>(prob >= 0.0 && prob <= 1.0, <span class="stringliteral">"The Bernoulli source probability "</span> |
---|
| 93 | <a name="l00081"></a>00081 <span class="stringliteral">"must be between 0 and 1"</span>); |
---|
| 94 | <a name="l00082"></a>00082 p = prob; |
---|
| 95 | <a name="l00083"></a>00083 } |
---|
| 96 | <a name="l00085"></a><a class="code" href="classitpp_1_1Bernoulli__RNG.html#970707ebcdade6775717be16b2160829">00085</a> <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1Bernoulli__RNG.html#970707ebcdade6775717be16b2160829" title="return the probability">get_setup</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> p; } |
---|
| 97 | <a name="l00087"></a><a class="code" href="classitpp_1_1Bernoulli__RNG.html#bb6831137cc5c71d8d9f5aebf9c85fe2">00087</a> <a class="code" href="classitpp_1_1bin.html" title="Binary arithmetic (boolean) class.">bin</a> <a class="code" href="classitpp_1_1Bernoulli__RNG.html#bb6831137cc5c71d8d9f5aebf9c85fe2" title="Get one sample.">operator()</a>() { <span class="keywordflow">return</span> <a class="code" href="classitpp_1_1Bernoulli__RNG.html#4fc5c799e10ca93c8cfb1bfc3b45ce7b" title="Get a sample.">sample</a>(); } |
---|
| 98 | <a name="l00089"></a><a class="code" href="classitpp_1_1Bernoulli__RNG.html#75ada9c6a1c1d3c5bc6faa84261a33ca">00089</a> bvec <a class="code" href="classitpp_1_1Bernoulli__RNG.html#75ada9c6a1c1d3c5bc6faa84261a33ca" title="Get a sample vector.">operator()</a>(<span class="keywordtype">int</span> n) { bvec temp(n); <a class="code" href="classitpp_1_1Bernoulli__RNG.html#5f3458fc465076fce9d5c8b16907bbd8" title="Get a sample vector.">sample_vector</a>(n, temp); <span class="keywordflow">return</span> temp; } |
---|
| 99 | <a name="l00091"></a><a class="code" href="classitpp_1_1Bernoulli__RNG.html#0c55314d2779f6273da032f933ef2e21">00091</a> <a class="code" href="mat_8h.html#f90acd1af41bf2d1d8a4bb23662fff69" title="bin matrix">bmat</a> <a class="code" href="classitpp_1_1Bernoulli__RNG.html#0c55314d2779f6273da032f933ef2e21" title="Get a sample matrix.">operator()</a>(<span class="keywordtype">int</span> h, <span class="keywordtype">int</span> w) { <a class="code" href="mat_8h.html#f90acd1af41bf2d1d8a4bb23662fff69" title="bin matrix">bmat</a> temp(h, w); <a class="code" href="classitpp_1_1Bernoulli__RNG.html#9a66abd0823032094349464b7be7736d" title="Get a sample matrix.">sample_matrix</a>(h, w, temp); <span class="keywordflow">return</span> temp; } |
---|
| 100 | <a name="l00093"></a><a class="code" href="classitpp_1_1Bernoulli__RNG.html#4fc5c799e10ca93c8cfb1bfc3b45ce7b">00093</a> <a class="code" href="classitpp_1_1bin.html" title="Binary arithmetic (boolean) class.">bin</a> <a class="code" href="classitpp_1_1Bernoulli__RNG.html#4fc5c799e10ca93c8cfb1bfc3b45ce7b" title="Get a sample.">sample</a>() { <span class="keywordflow">return</span> RNG.<a class="code" href="classitpp_1_1DSFMT.html#8ff79b50d0b3ae41bf2e8d4d2fc06099" title="Generate uniform [0, 1) double pseudorandom number.">genrand_close_open</a>() < p ? <a class="code" href="classitpp_1_1bin.html" title="Binary arithmetic (boolean) class.">bin</a>(1) : bin(0); } |
---|
| 101 | <a name="l00095"></a><a class="code" href="classitpp_1_1Bernoulli__RNG.html#5f3458fc465076fce9d5c8b16907bbd8">00095</a> <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Bernoulli__RNG.html#5f3458fc465076fce9d5c8b16907bbd8" title="Get a sample vector.">sample_vector</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>, bvec &out) { |
---|
| 102 | <a name="l00096"></a>00096 out.set_size(size, <span class="keyword">false</span>); |
---|
| 103 | <a name="l00097"></a>00097 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < size; i++) out(i) = <a class="code" href="classitpp_1_1Bernoulli__RNG.html#4fc5c799e10ca93c8cfb1bfc3b45ce7b" title="Get a sample.">sample</a>(); |
---|
| 104 | <a name="l00098"></a>00098 } |
---|
| 105 | <a name="l00100"></a><a class="code" href="classitpp_1_1Bernoulli__RNG.html#9a66abd0823032094349464b7be7736d">00100</a> <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Bernoulli__RNG.html#9a66abd0823032094349464b7be7736d" title="Get a sample matrix.">sample_matrix</a>(<span class="keywordtype">int</span> rows, <span class="keywordtype">int</span> cols, <a class="code" href="mat_8h.html#f90acd1af41bf2d1d8a4bb23662fff69" title="bin matrix">bmat</a> &out) { |
---|
| 106 | <a name="l00101"></a>00101 out.set_size(rows, cols, <span class="keyword">false</span>); |
---|
| 107 | <a name="l00102"></a>00102 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < rows*cols; i++) out(i) = <a class="code" href="classitpp_1_1Bernoulli__RNG.html#4fc5c799e10ca93c8cfb1bfc3b45ce7b" title="Get a sample.">sample</a>(); |
---|
| 108 | <a name="l00103"></a>00103 } |
---|
| 109 | <a name="l00104"></a>00104 <span class="keyword">protected</span>: |
---|
| 110 | <a name="l00105"></a>00105 <span class="keyword">private</span>: |
---|
| 111 | <a name="l00107"></a>00107 <span class="keywordtype">double</span> p; |
---|
| 112 | <a name="l00109"></a>00109 <a class="code" href="classitpp_1_1DSFMT.html" title="C++ implementation of dSFMT random number generatorThe DSFMT class implements parts...">Random_Generator</a> RNG; |
---|
| 113 | <a name="l00110"></a>00110 }; |
---|
| 114 | <a name="l00111"></a>00111 |
---|
| 115 | <a name="l00129"></a><a class="code" href="classitpp_1_1I__Uniform__RNG.html">00129</a> <span class="keyword">class </span><a class="code" href="classitpp_1_1I__Uniform__RNG.html" title="Integer uniform distributionExample: Generation of random uniformly distributed integers...">I_Uniform_RNG</a> |
---|
| 116 | <a name="l00130"></a>00130 { |
---|
| 117 | <a name="l00131"></a>00131 <span class="keyword">public</span>: |
---|
| 118 | <a name="l00133"></a>00133 <a class="code" href="classitpp_1_1I__Uniform__RNG.html#9e27914cf212a099adf42ba2c4878e04" title="constructor. Sets min and max values.">I_Uniform_RNG</a>(<span class="keywordtype">int</span> <a class="code" href="group__protocol.html#g27dde5be5aac902c0de838b4b872cd2f" title="ADD DOCUMENTATION HERE.">min</a> = 0, <span class="keywordtype">int</span> <a class="code" href="group__protocol.html#g3e4e78a5230c444344a135c661163ef2" title="ADD DOCUMENTATION HERE.">max</a> = 1); |
---|
| 119 | <a name="l00135"></a>00135 <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1I__Uniform__RNG.html#319282f08bbeb7e254565455e256b6aa" title="set min and max values">setup</a>(<span class="keywordtype">int</span> <a class="code" href="group__protocol.html#g27dde5be5aac902c0de838b4b872cd2f" title="ADD DOCUMENTATION HERE.">min</a>, <span class="keywordtype">int</span> <a class="code" href="group__protocol.html#g3e4e78a5230c444344a135c661163ef2" title="ADD DOCUMENTATION HERE.">max</a>); |
---|
| 120 | <a name="l00137"></a>00137 <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1I__Uniform__RNG.html#394af0535af0c407e3d9b98d2bbce87b" title="get the parameters">get_setup</a>(<span class="keywordtype">int</span> &min, <span class="keywordtype">int</span> &max) <span class="keyword">const</span>; |
---|
| 121 | <a name="l00139"></a><a class="code" href="classitpp_1_1I__Uniform__RNG.html#eb2a8e24ae009fcad5a41d5855589649">00139</a> <span class="keywordtype">int</span> <a class="code" href="classitpp_1_1I__Uniform__RNG.html#eb2a8e24ae009fcad5a41d5855589649" title="Get one sample.">operator()</a>() { <span class="keywordflow">return</span> <a class="code" href="classitpp_1_1I__Uniform__RNG.html#d75b0138f1e18d45575754f8e9b74b2d" title="Return a single value from this random generator.">sample</a>(); } |
---|
| 122 | <a name="l00141"></a>00141 ivec <a class="code" href="classitpp_1_1I__Uniform__RNG.html#eb2a8e24ae009fcad5a41d5855589649" title="Get one sample.">operator()</a>(<span class="keywordtype">int</span> n); |
---|
| 123 | <a name="l00143"></a>00143 imat <a class="code" href="classitpp_1_1I__Uniform__RNG.html#eb2a8e24ae009fcad5a41d5855589649" title="Get one sample.">operator()</a>(<span class="keywordtype">int</span> h, <span class="keywordtype">int</span> w); |
---|
| 124 | <a name="l00145"></a><a class="code" href="classitpp_1_1I__Uniform__RNG.html#d75b0138f1e18d45575754f8e9b74b2d">00145</a> <span class="keywordtype">int</span> <a class="code" href="classitpp_1_1I__Uniform__RNG.html#d75b0138f1e18d45575754f8e9b74b2d" title="Return a single value from this random generator.">sample</a>() { |
---|
| 125 | <a name="l00146"></a>00146 <span class="keywordflow">return</span> <a class="code" href="group__convertfunc.html#gb5745fd45c164c8d1e062359d0bf2783" title="Round to nearest lower integer.">floor_i</a>(RNG.<a class="code" href="classitpp_1_1DSFMT.html#8ff79b50d0b3ae41bf2e8d4d2fc06099" title="Generate uniform [0, 1) double pseudorandom number.">genrand_close_open</a>() * (hi - lo + 1)) + lo; |
---|
| 126 | <a name="l00147"></a>00147 } |
---|
| 127 | <a name="l00148"></a>00148 <span class="keyword">private</span>: |
---|
| 128 | <a name="l00150"></a>00150 <span class="keywordtype">int</span> lo; |
---|
| 129 | <a name="l00152"></a>00152 <span class="keywordtype">int</span> hi; |
---|
| 130 | <a name="l00154"></a>00154 <a class="code" href="classitpp_1_1DSFMT.html" title="C++ implementation of dSFMT random number generatorThe DSFMT class implements parts...">Random_Generator</a> RNG; |
---|
| 131 | <a name="l00155"></a>00155 }; |
---|
| 132 | <a name="l00156"></a>00156 |
---|
| 133 | <a name="l00161"></a><a class="code" href="classitpp_1_1Uniform__RNG.html">00161</a> <span class="keyword">class </span><a class="code" href="classitpp_1_1Uniform__RNG.html" title="Uniform distribution.">Uniform_RNG</a> |
---|
| 134 | <a name="l00162"></a>00162 { |
---|
| 135 | <a name="l00163"></a>00163 <span class="keyword">public</span>: |
---|
| 136 | <a name="l00165"></a>00165 <a class="code" href="classitpp_1_1Uniform__RNG.html#301be8e09a13951f9c2f68c44af3810f" title="Constructor. Set min, max and seed.">Uniform_RNG</a>(<span class="keywordtype">double</span> <a class="code" href="group__protocol.html#g27dde5be5aac902c0de838b4b872cd2f" title="ADD DOCUMENTATION HERE.">min</a> = 0, <span class="keywordtype">double</span> <a class="code" href="group__protocol.html#g3e4e78a5230c444344a135c661163ef2" title="ADD DOCUMENTATION HERE.">max</a> = 1.0); |
---|
| 137 | <a name="l00167"></a>00167 <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Uniform__RNG.html#315f0f487525c18cff6c02c339d591e7" title="set min and max">setup</a>(<span class="keywordtype">double</span> <a class="code" href="group__protocol.html#g27dde5be5aac902c0de838b4b872cd2f" title="ADD DOCUMENTATION HERE.">min</a>, <span class="keywordtype">double</span> <a class="code" href="group__protocol.html#g3e4e78a5230c444344a135c661163ef2" title="ADD DOCUMENTATION HERE.">max</a>); |
---|
| 138 | <a name="l00169"></a>00169 <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Uniform__RNG.html#0ed2b60584685b0c4567c10be41fe2ea" title="get parameters">get_setup</a>(<span class="keywordtype">double</span> &min, <span class="keywordtype">double</span> &max) <span class="keyword">const</span>; |
---|
| 139 | <a name="l00171"></a><a class="code" href="classitpp_1_1Uniform__RNG.html#f21d969e99485aeeeb653a3f4d1d4a54">00171</a> <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1Uniform__RNG.html#f21d969e99485aeeeb653a3f4d1d4a54" title="Get one sample.">operator()</a>() { <span class="keywordflow">return</span> (<a class="code" href="classitpp_1_1Uniform__RNG.html#4864ca6abf74c86fcd92467c002fc057" title="Get a Uniformly distributed [0,1) sample.">sample</a>() * (hi_bound - lo_bound) + lo_bound); } |
---|
| 140 | <a name="l00173"></a><a class="code" href="classitpp_1_1Uniform__RNG.html#327eeba30a40a750edcc7ce83b92df9d">00173</a> vec <a class="code" href="classitpp_1_1Uniform__RNG.html#327eeba30a40a750edcc7ce83b92df9d" title="Get a sample vector.">operator()</a>(<span class="keywordtype">int</span> n) { |
---|
| 141 | <a name="l00174"></a>00174 vec temp(n); |
---|
| 142 | <a name="l00175"></a>00175 <a class="code" href="classitpp_1_1Uniform__RNG.html#3059402ccc1a0af044b9bd217a32f5c7" title="Get a Uniformly distributed [0,1) vector.">sample_vector</a>(n, temp); |
---|
| 143 | <a name="l00176"></a>00176 temp *= hi_bound - lo_bound; |
---|
| 144 | <a name="l00177"></a>00177 temp += lo_bound; |
---|
| 145 | <a name="l00178"></a>00178 <span class="keywordflow">return</span> temp; |
---|
| 146 | <a name="l00179"></a>00179 } |
---|
| 147 | <a name="l00181"></a><a class="code" href="classitpp_1_1Uniform__RNG.html#845b0e4a3b1511d24de370752a3cf90f">00181</a> mat <a class="code" href="classitpp_1_1Uniform__RNG.html#845b0e4a3b1511d24de370752a3cf90f" title="Get a sample matrix.">operator()</a>(<span class="keywordtype">int</span> h, <span class="keywordtype">int</span> w) { |
---|
| 148 | <a name="l00182"></a>00182 mat temp(h, w); |
---|
| 149 | <a name="l00183"></a>00183 <a class="code" href="classitpp_1_1Uniform__RNG.html#bd0b24883ee383a4aa2d255b89af5ee4" title="Get a Uniformly distributed [0,1) matrix.">sample_matrix</a>(h, w, temp); |
---|
| 150 | <a name="l00184"></a>00184 temp *= hi_bound - lo_bound; |
---|
| 151 | <a name="l00185"></a>00185 temp += lo_bound; |
---|
| 152 | <a name="l00186"></a>00186 <span class="keywordflow">return</span> temp; |
---|
| 153 | <a name="l00187"></a>00187 } |
---|
| 154 | <a name="l00189"></a><a class="code" href="classitpp_1_1Uniform__RNG.html#4864ca6abf74c86fcd92467c002fc057">00189</a> <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1Uniform__RNG.html#4864ca6abf74c86fcd92467c002fc057" title="Get a Uniformly distributed [0,1) sample.">sample</a>() { <span class="keywordflow">return</span> RNG.<a class="code" href="classitpp_1_1DSFMT.html#8ff79b50d0b3ae41bf2e8d4d2fc06099" title="Generate uniform [0, 1) double pseudorandom number.">genrand_close_open</a>(); } |
---|
| 155 | <a name="l00191"></a><a class="code" href="classitpp_1_1Uniform__RNG.html#3059402ccc1a0af044b9bd217a32f5c7">00191</a> <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Uniform__RNG.html#3059402ccc1a0af044b9bd217a32f5c7" title="Get a Uniformly distributed [0,1) vector.">sample_vector</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>, vec &out) { |
---|
| 156 | <a name="l00192"></a>00192 out.set_size(size, <span class="keyword">false</span>); |
---|
| 157 | <a name="l00193"></a>00193 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < size; i++) out(i) = <a class="code" href="classitpp_1_1Uniform__RNG.html#4864ca6abf74c86fcd92467c002fc057" title="Get a Uniformly distributed [0,1) sample.">sample</a>(); |
---|
| 158 | <a name="l00194"></a>00194 } |
---|
| 159 | <a name="l00196"></a><a class="code" href="classitpp_1_1Uniform__RNG.html#bd0b24883ee383a4aa2d255b89af5ee4">00196</a> <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Uniform__RNG.html#bd0b24883ee383a4aa2d255b89af5ee4" title="Get a Uniformly distributed [0,1) matrix.">sample_matrix</a>(<span class="keywordtype">int</span> rows, <span class="keywordtype">int</span> cols, mat &out) { |
---|
| 160 | <a name="l00197"></a>00197 out.set_size(rows, cols, <span class="keyword">false</span>); |
---|
| 161 | <a name="l00198"></a>00198 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < rows*cols; i++) out(i) = <a class="code" href="classitpp_1_1Uniform__RNG.html#4864ca6abf74c86fcd92467c002fc057" title="Get a Uniformly distributed [0,1) sample.">sample</a>(); |
---|
| 162 | <a name="l00199"></a>00199 } |
---|
| 163 | <a name="l00200"></a>00200 <span class="keyword">protected</span>: |
---|
| 164 | <a name="l00201"></a>00201 <span class="keyword">private</span>: |
---|
| 165 | <a name="l00203"></a>00203 <span class="keywordtype">double</span> lo_bound, hi_bound; |
---|
| 166 | <a name="l00205"></a>00205 <a class="code" href="classitpp_1_1DSFMT.html" title="C++ implementation of dSFMT random number generatorThe DSFMT class implements parts...">Random_Generator</a> RNG; |
---|
| 167 | <a name="l00206"></a>00206 }; |
---|
| 168 | <a name="l00207"></a>00207 |
---|
| 169 | <a name="l00212"></a><a class="code" href="classitpp_1_1Exponential__RNG.html">00212</a> <span class="keyword">class </span><a class="code" href="classitpp_1_1Exponential__RNG.html" title="Exponential distribution.">Exponential_RNG</a> |
---|
| 170 | <a name="l00213"></a>00213 { |
---|
| 171 | <a name="l00214"></a>00214 <span class="keyword">public</span>: |
---|
| 172 | <a name="l00216"></a>00216 <a class="code" href="classitpp_1_1Exponential__RNG.html#9c6696d92e75aa69937b566d888555aa" title="constructor. Set lambda.">Exponential_RNG</a>(<span class="keywordtype">double</span> lambda = 1.0); |
---|
| 173 | <a name="l00218"></a><a class="code" href="classitpp_1_1Exponential__RNG.html#c0a420aba9b985e2b046d6f481c520fe">00218</a> <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Exponential__RNG.html#c0a420aba9b985e2b046d6f481c520fe" title="Set lambda.">setup</a>(<span class="keywordtype">double</span> lambda) { l = lambda; } |
---|
| 174 | <a name="l00220"></a>00220 <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1Exponential__RNG.html#390c91e3568fa1b4ddf46eb9adb37ac4" title="get lambda">get_setup</a>() <span class="keyword">const</span>; |
---|
| 175 | <a name="l00222"></a><a class="code" href="classitpp_1_1Exponential__RNG.html#a0340b9f523694ffc0cb1e44623fceea">00222</a> <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1Exponential__RNG.html#a0340b9f523694ffc0cb1e44623fceea" title="Get one sample.">operator()</a>() { <span class="keywordflow">return</span> sample(); } |
---|
| 176 | <a name="l00224"></a>00224 vec <a class="code" href="classitpp_1_1Exponential__RNG.html#a0340b9f523694ffc0cb1e44623fceea" title="Get one sample.">operator()</a>(<span class="keywordtype">int</span> n); |
---|
| 177 | <a name="l00226"></a>00226 mat <a class="code" href="classitpp_1_1Exponential__RNG.html#a0340b9f523694ffc0cb1e44623fceea" title="Get one sample.">operator()</a>(<span class="keywordtype">int</span> h, <span class="keywordtype">int</span> w); |
---|
| 178 | <a name="l00227"></a>00227 <span class="keyword">private</span>: |
---|
| 179 | <a name="l00228"></a>00228 <span class="keywordtype">double</span> sample() { <span class="keywordflow">return</span> (-<a class="code" href="group__logexpfunc.html#g320dc9f6d27a6cfe4e149633fd1ea566" title="The natural logarithm of the elements.">std::log</a>(RNG.<a class="code" href="classitpp_1_1DSFMT.html#b61104ac9de7e52f9462c41c8ffe4606" title="Generate uniform (0, 1] double pseudorandom number.">genrand_open_close</a>()) / l); } |
---|
| 180 | <a name="l00229"></a>00229 <span class="keywordtype">double</span> l; |
---|
| 181 | <a name="l00230"></a>00230 <a class="code" href="group__randgen.html#g34eae65e1f1e6c0faced9e9d64eb67b4" title="Base class for random (stochastic) sources.Random_Generator is a typedef of DSFMT...">Random_Generator</a> RNG; |
---|
| 182 | <a name="l00231"></a>00231 }; |
---|
| 183 | <a name="l00232"></a>00232 |
---|
| 184 | <a name="l00247"></a><a class="code" href="classitpp_1_1Normal__RNG.html">00247</a> <span class="keyword">class </span><a class="code" href="classitpp_1_1Normal__RNG.html" title="Normal distributionNormal (Gaussian) random variables, using a simplified Ziggurat...">Normal_RNG</a> |
---|
| 185 | <a name="l00248"></a>00248 { |
---|
| 186 | <a name="l00249"></a>00249 <span class="keyword">public</span>: |
---|
| 187 | <a name="l00251"></a><a class="code" href="classitpp_1_1Normal__RNG.html#dd55ffa72d3f5eb0995ab54894e08c8d">00251</a> <a class="code" href="classitpp_1_1Normal__RNG.html#a64c4c84526ad74d6ecde287149dd63f" title="Constructor. Set mean and variance.">Normal_RNG</a>(<span class="keywordtype">double</span> meanval, <span class="keywordtype">double</span> <a class="code" href="group__statistics.html#g7a4799948ff9779eaeecabde0ce5fcbb" title="The variance of the elements in the vector. Normalized with N-1 to be unbiased.">variance</a>): |
---|
| 188 | <a name="l00252"></a>00252 mean(meanval), sigma(std::<a class="code" href="group__miscfunc.html#g20af7c97287e8275db8c2b0f650310ac" title="Square root of the elements.">sqrt</a>(variance)) {} |
---|
| 189 | <a name="l00254"></a><a class="code" href="classitpp_1_1Normal__RNG.html#a64c4c84526ad74d6ecde287149dd63f">00254</a> <a class="code" href="classitpp_1_1Normal__RNG.html#a64c4c84526ad74d6ecde287149dd63f" title="Constructor. Set mean and variance.">Normal_RNG</a>(): mean(0.0), sigma(1.0) {} |
---|
| 190 | <a name="l00256"></a><a class="code" href="classitpp_1_1Normal__RNG.html#9c50b4c9b0bb07c69c9fbf16b9f01521">00256</a> <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Normal__RNG.html#9c50b4c9b0bb07c69c9fbf16b9f01521" title="Set mean, and variance.">setup</a>(<span class="keywordtype">double</span> meanval, <span class="keywordtype">double</span> <a class="code" href="group__statistics.html#g7a4799948ff9779eaeecabde0ce5fcbb" title="The variance of the elements in the vector. Normalized with N-1 to be unbiased.">variance</a>) |
---|
| 191 | <a name="l00257"></a>00257 { mean = meanval; sigma = <a class="code" href="group__miscfunc.html#g20af7c97287e8275db8c2b0f650310ac" title="Square root of the elements.">std::sqrt</a>(variance); } |
---|
| 192 | <a name="l00259"></a>00259 <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Normal__RNG.html#93a1030543e425b82862c23467cb360a" title="Get mean and variance.">get_setup</a>(<span class="keywordtype">double</span> &meanval, <span class="keywordtype">double</span> &<a class="code" href="group__statistics.html#g7a4799948ff9779eaeecabde0ce5fcbb" title="The variance of the elements in the vector. Normalized with N-1 to be unbiased.">variance</a>) <span class="keyword">const</span>; |
---|
| 193 | <a name="l00261"></a><a class="code" href="classitpp_1_1Normal__RNG.html#98cb5f1d64fe9c1bdc4e97b136d6a8c3">00261</a> <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1Normal__RNG.html#98cb5f1d64fe9c1bdc4e97b136d6a8c3" title="Get one sample.">operator()</a>() { <span class="keywordflow">return</span> (sigma*<a class="code" href="classitpp_1_1Normal__RNG.html#10bf6949c45e781a36e967d9c8448614" title="Get a Normal distributed (0,1) sample.">sample</a>() + mean); } |
---|
| 194 | <a name="l00263"></a><a class="code" href="classitpp_1_1Normal__RNG.html#80d83d4d528cb3b4b788b7b479181a45">00263</a> vec <a class="code" href="classitpp_1_1Normal__RNG.html#80d83d4d528cb3b4b788b7b479181a45" title="Get a sample vector.">operator()</a>(<span class="keywordtype">int</span> n) { |
---|
| 195 | <a name="l00264"></a>00264 vec temp(n); |
---|
| 196 | <a name="l00265"></a>00265 <a class="code" href="classitpp_1_1Normal__RNG.html#03e547de2b7ed75be013ab665a07c4e8" title="Get a Normal distributed (0,1) vector.">sample_vector</a>(n, temp); |
---|
| 197 | <a name="l00266"></a>00266 temp *= sigma; |
---|
| 198 | <a name="l00267"></a>00267 temp += mean; |
---|
| 199 | <a name="l00268"></a>00268 <span class="keywordflow">return</span> temp; |
---|
| 200 | <a name="l00269"></a>00269 } |
---|
| 201 | <a name="l00271"></a><a class="code" href="classitpp_1_1Normal__RNG.html#6fe784c0dc8ccb689dd0ba8c4fa66dd2">00271</a> mat <a class="code" href="classitpp_1_1Normal__RNG.html#6fe784c0dc8ccb689dd0ba8c4fa66dd2" title="Get a sample matrix.">operator()</a>(<span class="keywordtype">int</span> h, <span class="keywordtype">int</span> w) { |
---|
| 202 | <a name="l00272"></a>00272 mat temp(h, w); |
---|
| 203 | <a name="l00273"></a>00273 <a class="code" href="classitpp_1_1Normal__RNG.html#7dab2664826b5e3e57c4087a50201bfd" title="Get a Normal distributed (0,1) matrix.">sample_matrix</a>(h, w, temp); |
---|
| 204 | <a name="l00274"></a>00274 temp *= sigma; |
---|
| 205 | <a name="l00275"></a>00275 temp += mean; |
---|
| 206 | <a name="l00276"></a>00276 <span class="keywordflow">return</span> temp; |
---|
| 207 | <a name="l00277"></a>00277 } |
---|
| 208 | <a name="l00279"></a>00279 <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1Normal__RNG.html#10bf6949c45e781a36e967d9c8448614" title="Get a Normal distributed (0,1) sample.">sample</a>(); |
---|
| 209 | <a name="l00280"></a>00280 |
---|
| 210 | <a name="l00282"></a><a class="code" href="classitpp_1_1Normal__RNG.html#03e547de2b7ed75be013ab665a07c4e8">00282</a> <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Normal__RNG.html#03e547de2b7ed75be013ab665a07c4e8" title="Get a Normal distributed (0,1) vector.">sample_vector</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>, vec &out) { |
---|
| 211 | <a name="l00283"></a>00283 out.set_size(size, <span class="keyword">false</span>); |
---|
| 212 | <a name="l00284"></a>00284 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < size; i++) out(i) = <a class="code" href="classitpp_1_1Normal__RNG.html#10bf6949c45e781a36e967d9c8448614" title="Get a Normal distributed (0,1) sample.">sample</a>(); |
---|
| 213 | <a name="l00285"></a>00285 } |
---|
| 214 | <a name="l00286"></a>00286 |
---|
| 215 | <a name="l00288"></a><a class="code" href="classitpp_1_1Normal__RNG.html#7dab2664826b5e3e57c4087a50201bfd">00288</a> <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Normal__RNG.html#7dab2664826b5e3e57c4087a50201bfd" title="Get a Normal distributed (0,1) matrix.">sample_matrix</a>(<span class="keywordtype">int</span> rows, <span class="keywordtype">int</span> cols, mat &out) { |
---|
| 216 | <a name="l00289"></a>00289 out.set_size(rows, cols, <span class="keyword">false</span>); |
---|
| 217 | <a name="l00290"></a>00290 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < rows*cols; i++) out(i) = <a class="code" href="classitpp_1_1Normal__RNG.html#10bf6949c45e781a36e967d9c8448614" title="Get a Normal distributed (0,1) sample.">sample</a>(); |
---|
| 218 | <a name="l00291"></a>00291 } |
---|
| 219 | <a name="l00292"></a>00292 <span class="keyword">private</span>: |
---|
| 220 | <a name="l00293"></a>00293 <span class="keywordtype">double</span> mean, sigma; |
---|
| 221 | <a name="l00294"></a>00294 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">double</span> ytab[128]; |
---|
| 222 | <a name="l00295"></a>00295 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ktab[128]; |
---|
| 223 | <a name="l00296"></a>00296 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">double</span> wtab[128]; |
---|
| 224 | <a name="l00297"></a>00297 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">double</span> PARAM_R; |
---|
| 225 | <a name="l00298"></a>00298 <a class="code" href="classitpp_1_1DSFMT.html" title="C++ implementation of dSFMT random number generatorThe DSFMT class implements parts...">Random_Generator</a> RNG; |
---|
| 226 | <a name="l00299"></a>00299 }; |
---|
| 227 | <a name="l00300"></a>00300 |
---|
| 228 | <a name="l00317"></a><a class="code" href="classitpp_1_1Gamma__RNG.html">00317</a> <span class="keyword">class </span><a class="code" href="classitpp_1_1Gamma__RNG.html" title="Gamma distributionGenerate samples from Gamma(alpha,beta) density, according to the...">Gamma_RNG</a> |
---|
| 229 | <a name="l00318"></a>00318 { |
---|
| 230 | <a name="l00319"></a>00319 <span class="keyword">public</span>: |
---|
| 231 | <a name="l00321"></a><a class="code" href="classitpp_1_1Gamma__RNG.html#e132860f825f427d63652edd02c25b54">00321</a> <a class="code" href="classitpp_1_1Gamma__RNG.html#e132860f825f427d63652edd02c25b54" title="Constructor, which sets alpha (a) and beta (b).">Gamma_RNG</a>(<span class="keywordtype">double</span> a = 1.0, <span class="keywordtype">double</span> b = 1.0): alpha(a), beta(b) {} |
---|
| 232 | <a name="l00323"></a><a class="code" href="classitpp_1_1Gamma__RNG.html#cced56e9bb421619b7ff32fbf794d501">00323</a> <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Gamma__RNG.html#cced56e9bb421619b7ff32fbf794d501" title="Set alpha and beta.">setup</a>(<span class="keywordtype">double</span> a, <span class="keywordtype">double</span> b) { alpha = a; beta = b; } |
---|
| 233 | <a name="l00325"></a><a class="code" href="classitpp_1_1Gamma__RNG.html#98e2e65456bca33fca602b2bd607235e">00325</a> <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1Gamma__RNG.html#98e2e65456bca33fca602b2bd607235e" title="Get one sample.">operator()</a>() { <span class="keywordflow">return</span> <a class="code" href="classitpp_1_1Gamma__RNG.html#d79da7d042746e5aeb1a5b03976dda75" title="Get a sample.">sample</a>(); } |
---|
| 234 | <a name="l00327"></a>00327 vec <a class="code" href="classitpp_1_1Gamma__RNG.html#98e2e65456bca33fca602b2bd607235e" title="Get one sample.">operator()</a>(<span class="keywordtype">int</span> n); |
---|
| 235 | <a name="l00329"></a>00329 mat <a class="code" href="classitpp_1_1Gamma__RNG.html#98e2e65456bca33fca602b2bd607235e" title="Get one sample.">operator()</a>(<span class="keywordtype">int</span> r, <span class="keywordtype">int</span> c); |
---|
| 236 | <a name="l00331"></a>00331 <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1Gamma__RNG.html#d79da7d042746e5aeb1a5b03976dda75" title="Get a sample.">sample</a>(); |
---|
| 237 | <a name="l00332"></a>00332 <span class="keyword">private</span>: |
---|
| 238 | <a name="l00333"></a>00333 <span class="keywordtype">double</span> alpha; |
---|
| 239 | <a name="l00334"></a>00334 <span class="keywordtype">double</span> beta; |
---|
| 240 | <a name="l00335"></a>00335 <a class="code" href="classitpp_1_1DSFMT.html" title="C++ implementation of dSFMT random number generatorThe DSFMT class implements parts...">Random_Generator</a> RNG; |
---|
| 241 | <a name="l00336"></a>00336 <a class="code" href="classitpp_1_1Normal__RNG.html" title="Normal distributionNormal (Gaussian) random variables, using a simplified Ziggurat...">Normal_RNG</a> NRNG; |
---|
| 242 | <a name="l00337"></a>00337 }; |
---|
| 243 | <a name="l00338"></a>00338 |
---|
| 244 | <a name="l00343"></a><a class="code" href="classitpp_1_1Laplace__RNG.html">00343</a> <span class="keyword">class </span><a class="code" href="classitpp_1_1Laplace__RNG.html" title="Laplacian distribution.">Laplace_RNG</a> |
---|
| 245 | <a name="l00344"></a>00344 { |
---|
| 246 | <a name="l00345"></a>00345 <span class="keyword">public</span>: |
---|
| 247 | <a name="l00347"></a>00347 <a class="code" href="classitpp_1_1Laplace__RNG.html#6b9a099e102cb2b393cc6a70cc9cd470" title="Constructor. Set mean and variance.">Laplace_RNG</a>(<span class="keywordtype">double</span> meanval = 0.0, <span class="keywordtype">double</span> <a class="code" href="group__statistics.html#g7a4799948ff9779eaeecabde0ce5fcbb" title="The variance of the elements in the vector. Normalized with N-1 to be unbiased.">variance</a> = 1.0); |
---|
| 248 | <a name="l00349"></a>00349 <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Laplace__RNG.html#82efd88f28d7c0a6e4ff926700df3872" title="Set mean and variance.">setup</a>(<span class="keywordtype">double</span> meanval, <span class="keywordtype">double</span> <a class="code" href="group__statistics.html#g7a4799948ff9779eaeecabde0ce5fcbb" title="The variance of the elements in the vector. Normalized with N-1 to be unbiased.">variance</a>); |
---|
| 249 | <a name="l00351"></a>00351 <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Laplace__RNG.html#e6bf822f14dd184a0d9f9ec184c9db26" title="Get mean and variance.">get_setup</a>(<span class="keywordtype">double</span> &meanval, <span class="keywordtype">double</span> &variance) <span class="keyword">const</span>; |
---|
| 250 | <a name="l00353"></a><a class="code" href="classitpp_1_1Laplace__RNG.html#bee727a6f6a4a4b7f1a9288e610bca4f">00353</a> <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1Laplace__RNG.html#bee727a6f6a4a4b7f1a9288e610bca4f" title="Get one sample.">operator()</a>() { <span class="keywordflow">return</span> <a class="code" href="classitpp_1_1Laplace__RNG.html#d128bb52144672d675b06e26e9a488db" title="Returns a single sample.">sample</a>(); } |
---|
| 251 | <a name="l00355"></a>00355 vec <a class="code" href="classitpp_1_1Laplace__RNG.html#bee727a6f6a4a4b7f1a9288e610bca4f" title="Get one sample.">operator()</a>(<span class="keywordtype">int</span> n); |
---|
| 252 | <a name="l00357"></a>00357 mat <a class="code" href="classitpp_1_1Laplace__RNG.html#bee727a6f6a4a4b7f1a9288e610bca4f" title="Get one sample.">operator()</a>(<span class="keywordtype">int</span> h, <span class="keywordtype">int</span> w); |
---|
| 253 | <a name="l00359"></a><a class="code" href="classitpp_1_1Laplace__RNG.html#d128bb52144672d675b06e26e9a488db">00359</a> <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1Laplace__RNG.html#d128bb52144672d675b06e26e9a488db" title="Returns a single sample.">sample</a>() { |
---|
| 254 | <a name="l00360"></a>00360 <span class="keywordtype">double</span> u = RNG.<a class="code" href="classitpp_1_1DSFMT.html#186d6072f3c58313d28faa35f41b376f" title="Generate uniform (0, 1) double pseudorandom number.">genrand_open_open</a>(); |
---|
| 255 | <a name="l00361"></a>00361 <span class="keywordtype">double</span> l = sqrt_12var; |
---|
| 256 | <a name="l00362"></a>00362 <span class="keywordflow">if</span> (u < 0.5) |
---|
| 257 | <a name="l00363"></a>00363 l *= <a class="code" href="group__logexpfunc.html#g320dc9f6d27a6cfe4e149633fd1ea566" title="The natural logarithm of the elements.">std::log</a>(2.0 * u); |
---|
| 258 | <a name="l00364"></a>00364 <span class="keywordflow">else</span> |
---|
| 259 | <a name="l00365"></a>00365 l *= -<a class="code" href="group__logexpfunc.html#g320dc9f6d27a6cfe4e149633fd1ea566" title="The natural logarithm of the elements.">std::log</a>(2.0 * (1 - u)); |
---|
| 260 | <a name="l00366"></a>00366 <span class="keywordflow">return</span> (l + mean); |
---|
| 261 | <a name="l00367"></a>00367 } |
---|
| 262 | <a name="l00368"></a>00368 <span class="keyword">private</span>: |
---|
| 263 | <a name="l00369"></a>00369 <span class="keywordtype">double</span> mean, var, sqrt_12var; |
---|
| 264 | <a name="l00370"></a>00370 <a class="code" href="classitpp_1_1DSFMT.html" title="C++ implementation of dSFMT random number generatorThe DSFMT class implements parts...">Random_Generator</a> RNG; |
---|
| 265 | <a name="l00371"></a>00371 }; |
---|
| 266 | <a name="l00372"></a>00372 |
---|
| 267 | <a name="l00377"></a><a class="code" href="classitpp_1_1Complex__Normal__RNG.html">00377</a> <span class="keyword">class </span><a class="code" href="classitpp_1_1Complex__Normal__RNG.html" title="A Complex Normal Source.">Complex_Normal_RNG</a> |
---|
| 268 | <a name="l00378"></a>00378 { |
---|
| 269 | <a name="l00379"></a>00379 <span class="keyword">public</span>: |
---|
| 270 | <a name="l00381"></a><a class="code" href="classitpp_1_1Complex__Normal__RNG.html#2d512e5aee21a47cfc60574ddeaf7528">00381</a> <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#cdeaeea5da5398f8d67dba20b22b9e4e" title="Default constructor.">Complex_Normal_RNG</a>(std::complex<double> <a class="code" href="group__statistics.html#gc370b4cfdc6baa037b7442ae6e2c4b5c" title="The mean value.">mean</a>, <span class="keywordtype">double</span> <a class="code" href="group__statistics.html#g7a4799948ff9779eaeecabde0ce5fcbb" title="The variance of the elements in the vector. Normalized with N-1 to be unbiased.">variance</a>): |
---|
| 271 | <a name="l00382"></a>00382 norm_factor(1.0 / std::<a class="code" href="group__miscfunc.html#g20af7c97287e8275db8c2b0f650310ac" title="Square root of the elements.">sqrt</a>(2.0)) { |
---|
| 272 | <a name="l00383"></a>00383 <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#53ac6d89ea402591e4d44e86db3fee42" title="Set mean and variance.">setup</a>(mean, variance); |
---|
| 273 | <a name="l00384"></a>00384 } |
---|
| 274 | <a name="l00386"></a><a class="code" href="classitpp_1_1Complex__Normal__RNG.html#cdeaeea5da5398f8d67dba20b22b9e4e">00386</a> <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#cdeaeea5da5398f8d67dba20b22b9e4e" title="Default constructor.">Complex_Normal_RNG</a>(): m(0.0), sigma(1.0), norm_factor(1.0 / std::<a class="code" href="group__miscfunc.html#g20af7c97287e8275db8c2b0f650310ac" title="Square root of the elements.">sqrt</a>(2.0)) {} |
---|
| 275 | <a name="l00388"></a><a class="code" href="classitpp_1_1Complex__Normal__RNG.html#53ac6d89ea402591e4d44e86db3fee42">00388</a> <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#53ac6d89ea402591e4d44e86db3fee42" title="Set mean and variance.">setup</a>(std::complex<double> <a class="code" href="group__statistics.html#gc370b4cfdc6baa037b7442ae6e2c4b5c" title="The mean value.">mean</a>, <span class="keywordtype">double</span> <a class="code" href="group__statistics.html#g7a4799948ff9779eaeecabde0ce5fcbb" title="The variance of the elements in the vector. Normalized with N-1 to be unbiased.">variance</a>) { |
---|
| 276 | <a name="l00389"></a>00389 m = mean; |
---|
| 277 | <a name="l00390"></a>00390 sigma = <a class="code" href="group__miscfunc.html#g20af7c97287e8275db8c2b0f650310ac" title="Square root of the elements.">std::sqrt</a>(variance); |
---|
| 278 | <a name="l00391"></a>00391 } |
---|
| 279 | <a name="l00393"></a><a class="code" href="classitpp_1_1Complex__Normal__RNG.html#1d46fd9db76af4d71d86e6814b347574">00393</a> <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#1d46fd9db76af4d71d86e6814b347574" title="Get mean and variance.">get_setup</a>(std::complex<double> &<a class="code" href="group__statistics.html#gc370b4cfdc6baa037b7442ae6e2c4b5c" title="The mean value.">mean</a>, <span class="keywordtype">double</span> &<a class="code" href="group__statistics.html#g7a4799948ff9779eaeecabde0ce5fcbb" title="The variance of the elements in the vector. Normalized with N-1 to be unbiased.">variance</a>) { |
---|
| 280 | <a name="l00394"></a>00394 mean = m; |
---|
| 281 | <a name="l00395"></a>00395 variance = sigma * sigma; |
---|
| 282 | <a name="l00396"></a>00396 } |
---|
| 283 | <a name="l00398"></a><a class="code" href="classitpp_1_1Complex__Normal__RNG.html#4a2e5b365776f33b92b04a445d071719">00398</a> std::complex<double> <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#4a2e5b365776f33b92b04a445d071719" title="Get one sample.">operator()</a>() { <span class="keywordflow">return</span> sigma*<a class="code" href="classitpp_1_1Complex__Normal__RNG.html#f9cd78184319ed6ec1b6916cec4d4482" title="Get a Complex Normal (0,1) distributed sample.">sample</a>() + m; } |
---|
| 284 | <a name="l00400"></a><a class="code" href="classitpp_1_1Complex__Normal__RNG.html#8ba26cceb3dd6bc34f195b7ba4108d70">00400</a> cvec <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#8ba26cceb3dd6bc34f195b7ba4108d70" title="Get a sample vector.">operator()</a>(<span class="keywordtype">int</span> n) { |
---|
| 285 | <a name="l00401"></a>00401 cvec temp(n); |
---|
| 286 | <a name="l00402"></a>00402 <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#7f2a2b96240917445295c847db708ba1" title="Get a Complex Normal (0,1) distributed vector.">sample_vector</a>(n, temp); |
---|
| 287 | <a name="l00403"></a>00403 temp *= sigma; |
---|
| 288 | <a name="l00404"></a>00404 temp += m; |
---|
| 289 | <a name="l00405"></a>00405 <span class="keywordflow">return</span> temp; |
---|
| 290 | <a name="l00406"></a>00406 } |
---|
| 291 | <a name="l00408"></a><a class="code" href="classitpp_1_1Complex__Normal__RNG.html#8636a9a4df8548f8375562016e87272c">00408</a> cmat <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#8636a9a4df8548f8375562016e87272c" title="Get a sample matrix.">operator()</a>(<span class="keywordtype">int</span> h, <span class="keywordtype">int</span> w) { |
---|
| 292 | <a name="l00409"></a>00409 cmat temp(h, w); |
---|
| 293 | <a name="l00410"></a>00410 <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#8977d88cd8bcc92b87edcf1f71df311f" title="Get a Complex Normal (0,1) distributed matrix.">sample_matrix</a>(h, w, temp); |
---|
| 294 | <a name="l00411"></a>00411 temp *= sigma; |
---|
| 295 | <a name="l00412"></a>00412 temp += m; |
---|
| 296 | <a name="l00413"></a>00413 <span class="keywordflow">return</span> temp; |
---|
| 297 | <a name="l00414"></a>00414 } |
---|
| 298 | <a name="l00416"></a><a class="code" href="classitpp_1_1Complex__Normal__RNG.html#f9cd78184319ed6ec1b6916cec4d4482">00416</a> std::complex<double> <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#f9cd78184319ed6ec1b6916cec4d4482" title="Get a Complex Normal (0,1) distributed sample.">sample</a>() { |
---|
| 299 | <a name="l00417"></a>00417 <span class="keywordtype">double</span> a = nRNG.<a class="code" href="classitpp_1_1Normal__RNG.html#10bf6949c45e781a36e967d9c8448614" title="Get a Normal distributed (0,1) sample.">sample</a>() * norm_factor; |
---|
| 300 | <a name="l00418"></a>00418 <span class="keywordtype">double</span> b = nRNG.<a class="code" href="classitpp_1_1Normal__RNG.html#10bf6949c45e781a36e967d9c8448614" title="Get a Normal distributed (0,1) sample.">sample</a>() * norm_factor; |
---|
| 301 | <a name="l00419"></a>00419 <span class="keywordflow">return</span> std::complex<double>(a, b); |
---|
| 302 | <a name="l00420"></a>00420 } |
---|
| 303 | <a name="l00421"></a>00421 |
---|
| 304 | <a name="l00423"></a><a class="code" href="classitpp_1_1Complex__Normal__RNG.html#7f2a2b96240917445295c847db708ba1">00423</a> <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#7f2a2b96240917445295c847db708ba1" title="Get a Complex Normal (0,1) distributed vector.">sample_vector</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>, cvec &out) { |
---|
| 305 | <a name="l00424"></a>00424 out.set_size(size, <span class="keyword">false</span>); |
---|
| 306 | <a name="l00425"></a>00425 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < size; i++) out(i) = <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#f9cd78184319ed6ec1b6916cec4d4482" title="Get a Complex Normal (0,1) distributed sample.">sample</a>(); |
---|
| 307 | <a name="l00426"></a>00426 } |
---|
| 308 | <a name="l00427"></a>00427 |
---|
| 309 | <a name="l00429"></a><a class="code" href="classitpp_1_1Complex__Normal__RNG.html#8977d88cd8bcc92b87edcf1f71df311f">00429</a> <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#8977d88cd8bcc92b87edcf1f71df311f" title="Get a Complex Normal (0,1) distributed matrix.">sample_matrix</a>(<span class="keywordtype">int</span> rows, <span class="keywordtype">int</span> cols, cmat &out) { |
---|
| 310 | <a name="l00430"></a>00430 out.set_size(rows, cols, <span class="keyword">false</span>); |
---|
| 311 | <a name="l00431"></a>00431 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < rows*cols; i++) out(i) = <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#f9cd78184319ed6ec1b6916cec4d4482" title="Get a Complex Normal (0,1) distributed sample.">sample</a>(); |
---|
| 312 | <a name="l00432"></a>00432 } |
---|
| 313 | <a name="l00433"></a>00433 |
---|
| 314 | <a name="l00435"></a><a class="code" href="classitpp_1_1Complex__Normal__RNG.html#276cb8963c9681c5a76e7dfdb8f54d15">00435</a> <a class="code" href="classitpp_1_1Complex__Normal__RNG.html" title="A Complex Normal Source.">Complex_Normal_RNG</a> & <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#276cb8963c9681c5a76e7dfdb8f54d15" title="Dummy assignment operator - MSVC++ warning C4512.">operator=</a>(<span class="keyword">const</span> <a class="code" href="classitpp_1_1Complex__Normal__RNG.html" title="A Complex Normal Source.">Complex_Normal_RNG</a>&) { <span class="keywordflow">return</span> *<span class="keyword">this</span>; } |
---|
| 315 | <a name="l00436"></a>00436 |
---|
| 316 | <a name="l00437"></a>00437 <span class="keyword">private</span>: |
---|
| 317 | <a name="l00438"></a>00438 std::complex<double> m; |
---|
| 318 | <a name="l00439"></a>00439 <span class="keywordtype">double</span> sigma; |
---|
| 319 | <a name="l00440"></a>00440 <span class="keyword">const</span> <span class="keywordtype">double</span> norm_factor; |
---|
| 320 | <a name="l00441"></a>00441 <a class="code" href="classitpp_1_1Normal__RNG.html" title="Normal distributionNormal (Gaussian) random variables, using a simplified Ziggurat...">Normal_RNG</a> nRNG; |
---|
| 321 | <a name="l00442"></a>00442 }; |
---|
| 322 | <a name="l00443"></a>00443 |
---|
| 323 | <a name="l00448"></a><a class="code" href="classitpp_1_1AR1__Normal__RNG.html">00448</a> <span class="keyword">class </span><a class="code" href="classitpp_1_1AR1__Normal__RNG.html" title="Filtered normal distribution.">AR1_Normal_RNG</a> |
---|
| 324 | <a name="l00449"></a>00449 { |
---|
| 325 | <a name="l00450"></a>00450 <span class="keyword">public</span>: |
---|
| 326 | <a name="l00452"></a>00452 <a class="code" href="classitpp_1_1AR1__Normal__RNG.html#3c4779b5210d4fdeb2378098937503fa" title="Constructor. Set mean, variance, and correlation.">AR1_Normal_RNG</a>(<span class="keywordtype">double</span> meanval = 0.0, <span class="keywordtype">double</span> <a class="code" href="group__statistics.html#g7a4799948ff9779eaeecabde0ce5fcbb" title="The variance of the elements in the vector. Normalized with N-1 to be unbiased.">variance</a> = 1.0, |
---|
| 327 | <a name="l00453"></a>00453 <span class="keywordtype">double</span> rho = 0.0); |
---|
| 328 | <a name="l00455"></a>00455 <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1AR1__Normal__RNG.html#b319f53d89932cb78b315cfa23f40be6" title="Set mean, variance, and correlation.">setup</a>(<span class="keywordtype">double</span> meanval, <span class="keywordtype">double</span> <a class="code" href="group__statistics.html#g7a4799948ff9779eaeecabde0ce5fcbb" title="The variance of the elements in the vector. Normalized with N-1 to be unbiased.">variance</a>, <span class="keywordtype">double</span> rho); |
---|
| 329 | <a name="l00457"></a>00457 <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1AR1__Normal__RNG.html#95af980651296b81ac701af35cb63d06" title="Get mean, variance and correlation.">get_setup</a>(<span class="keywordtype">double</span> &meanval, <span class="keywordtype">double</span> &variance, <span class="keywordtype">double</span> &rho) <span class="keyword">const</span>; |
---|
| 330 | <a name="l00459"></a>00459 <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1AR1__Normal__RNG.html#35bb15ace58f392a785850a214c52b29" title="Set memory contents to zero.">reset</a>(); |
---|
| 331 | <a name="l00461"></a><a class="code" href="classitpp_1_1AR1__Normal__RNG.html#20b1474cf028817ae2e652639f032019">00461</a> <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1AR1__Normal__RNG.html#20b1474cf028817ae2e652639f032019" title="Get a single random sample.">operator()</a>() { <span class="keywordflow">return</span> sample(); } |
---|
| 332 | <a name="l00463"></a>00463 vec <a class="code" href="classitpp_1_1AR1__Normal__RNG.html#20b1474cf028817ae2e652639f032019" title="Get a single random sample.">operator()</a>(<span class="keywordtype">int</span> n); |
---|
| 333 | <a name="l00465"></a>00465 mat <a class="code" href="classitpp_1_1AR1__Normal__RNG.html#20b1474cf028817ae2e652639f032019" title="Get a single random sample.">operator()</a>(<span class="keywordtype">int</span> h, <span class="keywordtype">int</span> w); |
---|
| 334 | <a name="l00466"></a>00466 <span class="keyword">private</span>: |
---|
| 335 | <a name="l00467"></a>00467 <span class="keywordtype">double</span> sample() { |
---|
| 336 | <a name="l00468"></a>00468 mem *= r; |
---|
| 337 | <a name="l00469"></a>00469 <span class="keywordflow">if</span> (odd) { |
---|
| 338 | <a name="l00470"></a>00470 r1 = m_2pi * RNG.<a class="code" href="classitpp_1_1DSFMT.html#b61104ac9de7e52f9462c41c8ffe4606" title="Generate uniform (0, 1] double pseudorandom number.">genrand_open_close</a>(); |
---|
| 339 | <a name="l00471"></a>00471 r2 = <a class="code" href="group__miscfunc.html#g20af7c97287e8275db8c2b0f650310ac" title="Square root of the elements.">std::sqrt</a>(factr * <a class="code" href="group__logexpfunc.html#g320dc9f6d27a6cfe4e149633fd1ea566" title="The natural logarithm of the elements.">std::log</a>(RNG.<a class="code" href="classitpp_1_1DSFMT.html#b61104ac9de7e52f9462c41c8ffe4606" title="Generate uniform (0, 1] double pseudorandom number.">genrand_open_close</a>())); |
---|
| 340 | <a name="l00472"></a>00472 mem += r2 * <a class="code" href="group__trifunc.html#g098a0025955a83d70458225324c21acf" title="Cosine function.">std::cos</a>(r1); |
---|
| 341 | <a name="l00473"></a>00473 } |
---|
| 342 | <a name="l00474"></a>00474 <span class="keywordflow">else</span> { |
---|
| 343 | <a name="l00475"></a>00475 mem += r2 * <a class="code" href="group__trifunc.html#g680fb273328ac7897cf28f6f980fe458" title="Sine function.">std::sin</a>(r1); |
---|
| 344 | <a name="l00476"></a>00476 } |
---|
| 345 | <a name="l00477"></a>00477 odd = !odd; |
---|
| 346 | <a name="l00478"></a>00478 <span class="keywordflow">return</span> (mem + mean); |
---|
| 347 | <a name="l00479"></a>00479 } |
---|
| 348 | <a name="l00480"></a>00480 <span class="keywordtype">double</span> mem, r, factr, mean, var, r1, r2; |
---|
| 349 | <a name="l00481"></a>00481 <span class="keywordtype">bool</span> odd; |
---|
| 350 | <a name="l00482"></a>00482 <a class="code" href="group__randgen.html#g34eae65e1f1e6c0faced9e9d64eb67b4" title="Base class for random (stochastic) sources.Random_Generator is a typedef of DSFMT...">Random_Generator</a> RNG; |
---|
| 351 | <a name="l00483"></a>00483 }; |
---|
| 352 | <a name="l00484"></a>00484 |
---|
| 353 | <a name="l00489"></a><a class="code" href="group__randgen.html#g0f1ab3d74408366b16f8d5bbbaaeea08">00489</a> <span class="keyword">typedef</span> <a class="code" href="classitpp_1_1Normal__RNG.html" title="Normal distributionNormal (Gaussian) random variables, using a simplified Ziggurat...">Normal_RNG</a> <a class="code" href="classitpp_1_1Normal__RNG.html" title="Normal distributionNormal (Gaussian) random variables, using a simplified Ziggurat...">Gauss_RNG</a>; |
---|
| 354 | <a name="l00490"></a>00490 |
---|
| 355 | <a name="l00495"></a><a class="code" href="group__randgen.html#gc65f0ea3d6ed038725b735070892c7ab">00495</a> <span class="keyword">typedef</span> <a class="code" href="classitpp_1_1AR1__Normal__RNG.html" title="Filtered normal distribution.">AR1_Normal_RNG</a> <a class="code" href="classitpp_1_1AR1__Normal__RNG.html" title="Filtered normal distribution.">AR1_Gauss_RNG</a>; |
---|
| 356 | <a name="l00496"></a>00496 |
---|
| 357 | <a name="l00501"></a><a class="code" href="classitpp_1_1Weibull__RNG.html">00501</a> <span class="keyword">class </span><a class="code" href="classitpp_1_1Weibull__RNG.html" title="Weibull distribution.">Weibull_RNG</a> |
---|
| 358 | <a name="l00502"></a>00502 { |
---|
| 359 | <a name="l00503"></a>00503 <span class="keyword">public</span>: |
---|
| 360 | <a name="l00505"></a>00505 <a class="code" href="classitpp_1_1Weibull__RNG.html#4d633a2389197604e8a0c03f9b39ff93" title="Constructor. Set lambda and beta.">Weibull_RNG</a>(<span class="keywordtype">double</span> lambda = 1.0, <span class="keywordtype">double</span> beta = 1.0); |
---|
| 361 | <a name="l00507"></a>00507 <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Weibull__RNG.html#d16d6f09ec1f318be2adb6893c903e60" title="Set lambda, and beta.">setup</a>(<span class="keywordtype">double</span> lambda, <span class="keywordtype">double</span> beta); |
---|
| 362 | <a name="l00509"></a><a class="code" href="classitpp_1_1Weibull__RNG.html#443bdcdd74fc622b96eefb445e74d4ef">00509</a> <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Weibull__RNG.html#443bdcdd74fc622b96eefb445e74d4ef" title="Get lambda and beta.">get_setup</a>(<span class="keywordtype">double</span> &lambda, <span class="keywordtype">double</span> &beta) { lambda = l; beta = b; } |
---|
| 363 | <a name="l00511"></a><a class="code" href="classitpp_1_1Weibull__RNG.html#243056f114791aa26e3de3296889babd">00511</a> <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1Weibull__RNG.html#243056f114791aa26e3de3296889babd" title="Get one sample.">operator()</a>() { <span class="keywordflow">return</span> sample(); } |
---|
| 364 | <a name="l00513"></a>00513 vec <a class="code" href="classitpp_1_1Weibull__RNG.html#243056f114791aa26e3de3296889babd" title="Get one sample.">operator()</a>(<span class="keywordtype">int</span> n); |
---|
| 365 | <a name="l00515"></a>00515 mat <a class="code" href="classitpp_1_1Weibull__RNG.html#243056f114791aa26e3de3296889babd" title="Get one sample.">operator()</a>(<span class="keywordtype">int</span> h, <span class="keywordtype">int</span> w); |
---|
| 366 | <a name="l00516"></a>00516 <span class="keyword">private</span>: |
---|
| 367 | <a name="l00517"></a>00517 <span class="keywordtype">double</span> sample() { |
---|
| 368 | <a name="l00518"></a>00518 <span class="keywordflow">return</span> (<a class="code" href="group__logexpfunc.html#g40f48a75172e7f8bc8e58ed54262a04d" title="Calculates x to the power of y (x^y).">std::pow</a>(-<a class="code" href="group__logexpfunc.html#g320dc9f6d27a6cfe4e149633fd1ea566" title="The natural logarithm of the elements.">std::log</a>(RNG.<a class="code" href="classitpp_1_1DSFMT.html#b61104ac9de7e52f9462c41c8ffe4606" title="Generate uniform (0, 1] double pseudorandom number.">genrand_open_close</a>()), 1.0 / b) / l); |
---|
| 369 | <a name="l00519"></a>00519 } |
---|
| 370 | <a name="l00520"></a>00520 <span class="keywordtype">double</span> l, b; |
---|
| 371 | <a name="l00521"></a>00521 <span class="keywordtype">double</span> mean, var; |
---|
| 372 | <a name="l00522"></a>00522 <a class="code" href="group__randgen.html#g34eae65e1f1e6c0faced9e9d64eb67b4" title="Base class for random (stochastic) sources.Random_Generator is a typedef of DSFMT...">Random_Generator</a> RNG; |
---|
| 373 | <a name="l00523"></a>00523 }; |
---|
| 374 | <a name="l00524"></a>00524 |
---|
| 375 | <a name="l00529"></a><a class="code" href="classitpp_1_1Rayleigh__RNG.html">00529</a> <span class="keyword">class </span><a class="code" href="classitpp_1_1Rayleigh__RNG.html" title="Rayleigh distribution.">Rayleigh_RNG</a> |
---|
| 376 | <a name="l00530"></a>00530 { |
---|
| 377 | <a name="l00531"></a>00531 <span class="keyword">public</span>: |
---|
| 378 | <a name="l00533"></a>00533 <a class="code" href="classitpp_1_1Rayleigh__RNG.html#2c1f94a8a12419e703311a30ce41d079" title="Constructor. Set sigma.">Rayleigh_RNG</a>(<span class="keywordtype">double</span> sigma = 1.0); |
---|
| 379 | <a name="l00535"></a><a class="code" href="classitpp_1_1Rayleigh__RNG.html#d35061baec84b2f8e2a9b8be095caa7e">00535</a> <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Rayleigh__RNG.html#d35061baec84b2f8e2a9b8be095caa7e" title="Set sigma.">setup</a>(<span class="keywordtype">double</span> sigma) { sig = sigma; } |
---|
| 380 | <a name="l00537"></a><a class="code" href="classitpp_1_1Rayleigh__RNG.html#2bcfda223a776abde99e1831fb022efc">00537</a> <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1Rayleigh__RNG.html#2bcfda223a776abde99e1831fb022efc" title="Get sigma.">get_setup</a>() { <span class="keywordflow">return</span> sig; } |
---|
| 381 | <a name="l00539"></a><a class="code" href="classitpp_1_1Rayleigh__RNG.html#d135e55c4d58459d553b7caceb134ea7">00539</a> <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1Rayleigh__RNG.html#d135e55c4d58459d553b7caceb134ea7" title="Get one sample.">operator()</a>() { <span class="keywordflow">return</span> sample(); } |
---|
| 382 | <a name="l00541"></a>00541 vec <a class="code" href="classitpp_1_1Rayleigh__RNG.html#d135e55c4d58459d553b7caceb134ea7" title="Get one sample.">operator()</a>(<span class="keywordtype">int</span> n); |
---|
| 383 | <a name="l00543"></a>00543 mat <a class="code" href="classitpp_1_1Rayleigh__RNG.html#d135e55c4d58459d553b7caceb134ea7" title="Get one sample.">operator()</a>(<span class="keywordtype">int</span> h, <span class="keywordtype">int</span> w); |
---|
| 384 | <a name="l00544"></a>00544 <span class="keyword">private</span>: |
---|
| 385 | <a name="l00545"></a>00545 <span class="keywordtype">double</span> sample() { |
---|
| 386 | <a name="l00546"></a>00546 <span class="keywordtype">double</span> s1 = nRNG.<a class="code" href="classitpp_1_1Normal__RNG.html#10bf6949c45e781a36e967d9c8448614" title="Get a Normal distributed (0,1) sample.">sample</a>(); |
---|
| 387 | <a name="l00547"></a>00547 <span class="keywordtype">double</span> s2 = nRNG.<a class="code" href="classitpp_1_1Normal__RNG.html#10bf6949c45e781a36e967d9c8448614" title="Get a Normal distributed (0,1) sample.">sample</a>(); |
---|
| 388 | <a name="l00548"></a>00548 <span class="comment">// s1 and s2 are N(0,1) and independent</span> |
---|
| 389 | <a name="l00549"></a>00549 <span class="keywordflow">return</span> (sig * <a class="code" href="group__miscfunc.html#g20af7c97287e8275db8c2b0f650310ac" title="Square root of the elements.">std::sqrt</a>(s1*s1 + s2*s2)); |
---|
| 390 | <a name="l00550"></a>00550 } |
---|
| 391 | <a name="l00551"></a>00551 <span class="keywordtype">double</span> sig; |
---|
| 392 | <a name="l00552"></a>00552 Normal_RNG nRNG; |
---|
| 393 | <a name="l00553"></a>00553 }; |
---|
| 394 | <a name="l00554"></a>00554 |
---|
| 395 | <a name="l00559"></a><a class="code" href="classitpp_1_1Rice__RNG.html">00559</a> <span class="keyword">class </span><a class="code" href="classitpp_1_1Rice__RNG.html" title="Rice distribution.">Rice_RNG</a> |
---|
| 396 | <a name="l00560"></a>00560 { |
---|
| 397 | <a name="l00561"></a>00561 <span class="keyword">public</span>: |
---|
| 398 | <a name="l00563"></a>00563 <a class="code" href="classitpp_1_1Rice__RNG.html#68ca660f1f23122562e5d2f18f2b1713" title="Constructor. Set sigma, and v (if v = 0, Rice -&gt; Rayleigh).">Rice_RNG</a>(<span class="keywordtype">double</span> sigma = 1.0, <span class="keywordtype">double</span> v = 1.0); |
---|
| 399 | <a name="l00565"></a><a class="code" href="classitpp_1_1Rice__RNG.html#f89e134c9dacaeed7eb8a79fc72cfa32">00565</a> <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Rice__RNG.html#f89e134c9dacaeed7eb8a79fc72cfa32" title="Set sigma, and v (if v = 0, Rice -&gt; Rayleigh).">setup</a>(<span class="keywordtype">double</span> sigma, <span class="keywordtype">double</span> v) { sig = sigma; s = v; } |
---|
| 400 | <a name="l00567"></a><a class="code" href="classitpp_1_1Rice__RNG.html#5e41a5ebe6c83ea5ff41dd1018c9e1e0">00567</a> <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Rice__RNG.html#5e41a5ebe6c83ea5ff41dd1018c9e1e0" title="Get parameters.">get_setup</a>(<span class="keywordtype">double</span> &sigma, <span class="keywordtype">double</span> &v) { sigma = sig; v = s; } |
---|
| 401 | <a name="l00569"></a><a class="code" href="classitpp_1_1Rice__RNG.html#1d5d5d302d4dc6b3033f135e28b43de2">00569</a> <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1Rice__RNG.html#1d5d5d302d4dc6b3033f135e28b43de2" title="Get one sample.">operator()</a>() { <span class="keywordflow">return</span> sample(); } |
---|
| 402 | <a name="l00571"></a>00571 vec <a class="code" href="classitpp_1_1Rice__RNG.html#1d5d5d302d4dc6b3033f135e28b43de2" title="Get one sample.">operator()</a>(<span class="keywordtype">int</span> n); |
---|
| 403 | <a name="l00573"></a>00573 mat <a class="code" href="classitpp_1_1Rice__RNG.html#1d5d5d302d4dc6b3033f135e28b43de2" title="Get one sample.">operator()</a>(<span class="keywordtype">int</span> h, <span class="keywordtype">int</span> w); |
---|
| 404 | <a name="l00574"></a>00574 <span class="keyword">private</span>: |
---|
| 405 | <a name="l00575"></a>00575 <span class="keywordtype">double</span> sample() { |
---|
| 406 | <a name="l00576"></a>00576 <span class="keywordtype">double</span> s1 = nRNG.<a class="code" href="classitpp_1_1Normal__RNG.html#10bf6949c45e781a36e967d9c8448614" title="Get a Normal distributed (0,1) sample.">sample</a>() + s; |
---|
| 407 | <a name="l00577"></a>00577 <span class="keywordtype">double</span> s2 = nRNG.<a class="code" href="classitpp_1_1Normal__RNG.html#10bf6949c45e781a36e967d9c8448614" title="Get a Normal distributed (0,1) sample.">sample</a>(); |
---|
| 408 | <a name="l00578"></a>00578 <span class="comment">// s1 and s2 are N(0,1) and independent</span> |
---|
| 409 | <a name="l00579"></a>00579 <span class="keywordflow">return</span> (sig * <a class="code" href="group__miscfunc.html#g20af7c97287e8275db8c2b0f650310ac" title="Square root of the elements.">std::sqrt</a>(s1*s1 + s2*s2)); |
---|
| 410 | <a name="l00580"></a>00580 } |
---|
| 411 | <a name="l00581"></a>00581 <span class="keywordtype">double</span> sig, s; |
---|
| 412 | <a name="l00582"></a>00582 Normal_RNG nRNG; |
---|
| 413 | <a name="l00583"></a>00583 }; |
---|
| 414 | <a name="l00584"></a>00584 |
---|
| 415 | <a name="l00587"></a>00587 |
---|
| 416 | <a name="l00589"></a><a class="code" href="group__randgen.html#g5aa06887cf1fd3301b040987924068f0">00589</a> <span class="keyword">inline</span> <a class="code" href="classitpp_1_1bin.html" title="Binary arithmetic (boolean) class.">bin</a> <a class="code" href="group__randgen.html#g2711f4c5927afc4e0aeb920007adfa1d" title="Generates a random bit matrix (equally likely 0s and 1s).">randb</a>(<span class="keywordtype">void</span>) { <a class="code" href="classitpp_1_1Bernoulli__RNG.html" title="Bernoulli distribution.">Bernoulli_RNG</a> src; <span class="keywordflow">return</span> src.<a class="code" href="classitpp_1_1Bernoulli__RNG.html#4fc5c799e10ca93c8cfb1bfc3b45ce7b" title="Get a sample.">sample</a>(); } |
---|
| 417 | <a name="l00591"></a><a class="code" href="group__randgen.html#g0930c061b843c2233c6622595be42eaf">00591</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__randgen.html#g2711f4c5927afc4e0aeb920007adfa1d" title="Generates a random bit matrix (equally likely 0s and 1s).">randb</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>, bvec &out) { <a class="code" href="classitpp_1_1Bernoulli__RNG.html" title="Bernoulli distribution.">Bernoulli_RNG</a> src; src.<a class="code" href="classitpp_1_1Bernoulli__RNG.html#5f3458fc465076fce9d5c8b16907bbd8" title="Get a sample vector.">sample_vector</a>(size, out); } |
---|
| 418 | <a name="l00593"></a><a class="code" href="group__randgen.html#ged2de689e8203b351b30e850d5c138a6">00593</a> <span class="keyword">inline</span> bvec <a class="code" href="group__randgen.html#g2711f4c5927afc4e0aeb920007adfa1d" title="Generates a random bit matrix (equally likely 0s and 1s).">randb</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>) { bvec temp; <a class="code" href="group__randgen.html#g2711f4c5927afc4e0aeb920007adfa1d" title="Generates a random bit matrix (equally likely 0s and 1s).">randb</a>(size, temp); <span class="keywordflow">return</span> temp; } |
---|
| 419 | <a name="l00595"></a><a class="code" href="group__randgen.html#gbf9ede8812e204b85fc1cdc8e4517e46">00595</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__randgen.html#g2711f4c5927afc4e0aeb920007adfa1d" title="Generates a random bit matrix (equally likely 0s and 1s).">randb</a>(<span class="keywordtype">int</span> rows, <span class="keywordtype">int</span> cols, <a class="code" href="mat_8h.html#f90acd1af41bf2d1d8a4bb23662fff69" title="bin matrix">bmat</a> &out) { <a class="code" href="classitpp_1_1Bernoulli__RNG.html" title="Bernoulli distribution.">Bernoulli_RNG</a> src; src.<a class="code" href="classitpp_1_1Bernoulli__RNG.html#9a66abd0823032094349464b7be7736d" title="Get a sample matrix.">sample_matrix</a>(rows, cols, out); } |
---|
| 420 | <a name="l00597"></a><a class="code" href="group__randgen.html#g2711f4c5927afc4e0aeb920007adfa1d">00597</a> <span class="keyword">inline</span> <a class="code" href="mat_8h.html#f90acd1af41bf2d1d8a4bb23662fff69" title="bin matrix">bmat</a> <a class="code" href="group__randgen.html#g2711f4c5927afc4e0aeb920007adfa1d" title="Generates a random bit matrix (equally likely 0s and 1s).">randb</a>(<span class="keywordtype">int</span> rows, <span class="keywordtype">int</span> cols) { <a class="code" href="mat_8h.html#f90acd1af41bf2d1d8a4bb23662fff69" title="bin matrix">bmat</a> temp; <a class="code" href="group__randgen.html#g2711f4c5927afc4e0aeb920007adfa1d" title="Generates a random bit matrix (equally likely 0s and 1s).">randb</a>(rows, cols, temp); <span class="keywordflow">return</span> temp; } |
---|
| 421 | <a name="l00598"></a>00598 |
---|
| 422 | <a name="l00600"></a><a class="code" href="group__randgen.html#g2c685c3170a003567543c620962fb44d">00600</a> <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="group__randgen.html#g7468ff48604f0bcc7e08b08f3d27d2fa" title="Generates a random uniform (0,1) matrix.">randu</a>(<span class="keywordtype">void</span>) { <a class="code" href="classitpp_1_1Uniform__RNG.html" title="Uniform distribution.">Uniform_RNG</a> src; <span class="keywordflow">return</span> src.<a class="code" href="classitpp_1_1Uniform__RNG.html#4864ca6abf74c86fcd92467c002fc057" title="Get a Uniformly distributed [0,1) sample.">sample</a>(); } |
---|
| 423 | <a name="l00602"></a><a class="code" href="group__randgen.html#gc50bb2350abebb061c971dc75021f360">00602</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__randgen.html#g7468ff48604f0bcc7e08b08f3d27d2fa" title="Generates a random uniform (0,1) matrix.">randu</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>, vec &out) { <a class="code" href="classitpp_1_1Uniform__RNG.html" title="Uniform distribution.">Uniform_RNG</a> src; src.<a class="code" href="classitpp_1_1Uniform__RNG.html#3059402ccc1a0af044b9bd217a32f5c7" title="Get a Uniformly distributed [0,1) vector.">sample_vector</a>(size, out); } |
---|
| 424 | <a name="l00604"></a><a class="code" href="group__randgen.html#g7f371ec740044d6bbe027a40661b5928">00604</a> <span class="keyword">inline</span> vec <a class="code" href="group__randgen.html#g7468ff48604f0bcc7e08b08f3d27d2fa" title="Generates a random uniform (0,1) matrix.">randu</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>) { vec temp; <a class="code" href="group__randgen.html#g7468ff48604f0bcc7e08b08f3d27d2fa" title="Generates a random uniform (0,1) matrix.">randu</a>(size, temp); <span class="keywordflow">return</span> temp; } |
---|
| 425 | <a name="l00606"></a><a class="code" href="group__randgen.html#g13d81185b2cfafbfd8cee70a5bf0de94">00606</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__randgen.html#g7468ff48604f0bcc7e08b08f3d27d2fa" title="Generates a random uniform (0,1) matrix.">randu</a>(<span class="keywordtype">int</span> rows, <span class="keywordtype">int</span> cols, mat &out) { <a class="code" href="classitpp_1_1Uniform__RNG.html" title="Uniform distribution.">Uniform_RNG</a> src; src.<a class="code" href="classitpp_1_1Uniform__RNG.html#bd0b24883ee383a4aa2d255b89af5ee4" title="Get a Uniformly distributed [0,1) matrix.">sample_matrix</a>(rows, cols, out); } |
---|
| 426 | <a name="l00608"></a><a class="code" href="group__randgen.html#g7468ff48604f0bcc7e08b08f3d27d2fa">00608</a> <span class="keyword">inline</span> mat <a class="code" href="group__randgen.html#g7468ff48604f0bcc7e08b08f3d27d2fa" title="Generates a random uniform (0,1) matrix.">randu</a>(<span class="keywordtype">int</span> rows, <span class="keywordtype">int</span> cols) { mat temp; <a class="code" href="group__randgen.html#g7468ff48604f0bcc7e08b08f3d27d2fa" title="Generates a random uniform (0,1) matrix.">randu</a>(rows, cols, temp); <span class="keywordflow">return</span> temp; } |
---|
| 427 | <a name="l00609"></a>00609 |
---|
| 428 | <a name="l00611"></a><a class="code" href="group__randgen.html#g8d7b64e094607ed9f312e2436facddf1">00611</a> <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="group__randgen.html#g23503b9d9f4d476cb0b5b0bc16a64c24" title="Generates a random imat with elements in the interval [low,high].">randi</a>(<span class="keywordtype">int</span> low, <span class="keywordtype">int</span> high) { <a class="code" href="classitpp_1_1I__Uniform__RNG.html" title="Integer uniform distributionExample: Generation of random uniformly distributed integers...">I_Uniform_RNG</a> src; src.<a class="code" href="classitpp_1_1I__Uniform__RNG.html#319282f08bbeb7e254565455e256b6aa" title="set min and max values">setup</a>(low, high); <span class="keywordflow">return</span> src(); } |
---|
| 429 | <a name="l00613"></a><a class="code" href="group__randgen.html#g4e2de9076e8fc03543972ce7ce0ba3c2">00613</a> <span class="keyword">inline</span> ivec <a class="code" href="group__randgen.html#g23503b9d9f4d476cb0b5b0bc16a64c24" title="Generates a random imat with elements in the interval [low,high].">randi</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>, <span class="keywordtype">int</span> low, <span class="keywordtype">int</span> high) { <a class="code" href="classitpp_1_1I__Uniform__RNG.html" title="Integer uniform distributionExample: Generation of random uniformly distributed integers...">I_Uniform_RNG</a> src; src.<a class="code" href="classitpp_1_1I__Uniform__RNG.html#319282f08bbeb7e254565455e256b6aa" title="set min and max values">setup</a>(low, high); <span class="keywordflow">return</span> src(size); } |
---|
| 430 | <a name="l00615"></a><a class="code" href="group__randgen.html#g23503b9d9f4d476cb0b5b0bc16a64c24">00615</a> <span class="keyword">inline</span> imat <a class="code" href="group__randgen.html#g23503b9d9f4d476cb0b5b0bc16a64c24" title="Generates a random imat with elements in the interval [low,high].">randi</a>(<span class="keywordtype">int</span> rows, <span class="keywordtype">int</span> cols, <span class="keywordtype">int</span> low, <span class="keywordtype">int</span> high) { <a class="code" href="classitpp_1_1I__Uniform__RNG.html" title="Integer uniform distributionExample: Generation of random uniformly distributed integers...">I_Uniform_RNG</a> src; src.<a class="code" href="classitpp_1_1I__Uniform__RNG.html#319282f08bbeb7e254565455e256b6aa" title="set min and max values">setup</a>(low, high); <span class="keywordflow">return</span> src(rows, cols); } |
---|
| 431 | <a name="l00616"></a>00616 |
---|
| 432 | <a name="l00618"></a><a class="code" href="group__randgen.html#g4548e4c5e7b3687bbf1cf4d15d6a2eaa">00618</a> <span class="keyword">inline</span> vec <a class="code" href="group__randgen.html#g4548e4c5e7b3687bbf1cf4d15d6a2eaa" title="Generates a random Rayleigh vector.">randray</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>, <span class="keywordtype">double</span> sigma = 1.0) { <a class="code" href="classitpp_1_1Rayleigh__RNG.html" title="Rayleigh distribution.">Rayleigh_RNG</a> src; src.<a class="code" href="classitpp_1_1Rayleigh__RNG.html#d35061baec84b2f8e2a9b8be095caa7e" title="Set sigma.">setup</a>(sigma); <span class="keywordflow">return</span> src(size); } |
---|
| 433 | <a name="l00619"></a>00619 |
---|
| 434 | <a name="l00621"></a><a class="code" href="group__randgen.html#g59d4c0350f23785130d41b89f9f8663a">00621</a> <span class="keyword">inline</span> vec <a class="code" href="group__randgen.html#g59d4c0350f23785130d41b89f9f8663a" title="Generates a random Rice vector (See J.G. Poakis, &quot;Digital Communications, 3rd...">randrice</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>, <span class="keywordtype">double</span> sigma = 1.0, <span class="keywordtype">double</span> s = 1.0) { <a class="code" href="classitpp_1_1Rice__RNG.html" title="Rice distribution.">Rice_RNG</a> src; src.<a class="code" href="classitpp_1_1Rice__RNG.html#f89e134c9dacaeed7eb8a79fc72cfa32" title="Set sigma, and v (if v = 0, Rice -&gt; Rayleigh).">setup</a>(sigma, s); <span class="keywordflow">return</span> src(size); } |
---|
| 435 | <a name="l00622"></a>00622 |
---|
| 436 | <a name="l00624"></a><a class="code" href="group__randgen.html#g315a5e1fd092db2f587acf8ee39b7e5a">00624</a> <span class="keyword">inline</span> vec <a class="code" href="group__randgen.html#g315a5e1fd092db2f587acf8ee39b7e5a" title="Generates a random complex Gaussian vector.">randexp</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>, <span class="keywordtype">double</span> lambda = 1.0) { <a class="code" href="classitpp_1_1Exponential__RNG.html" title="Exponential distribution.">Exponential_RNG</a> src; src.<a class="code" href="classitpp_1_1Exponential__RNG.html#c0a420aba9b985e2b046d6f481c520fe" title="Set lambda.">setup</a>(lambda); <span class="keywordflow">return</span> src(size); } |
---|
| 437 | <a name="l00625"></a>00625 |
---|
| 438 | <a name="l00627"></a><a class="code" href="group__randgen.html#g9ecf5af23567f51abc9af737fdbd872a">00627</a> <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="group__randgen.html#gea540712c17237806666c2dad0ed6f35" title="Generates a random Gaussian (0,1) matrix.">randn</a>(<span class="keywordtype">void</span>) { <a class="code" href="classitpp_1_1Normal__RNG.html" title="Normal distributionNormal (Gaussian) random variables, using a simplified Ziggurat...">Normal_RNG</a> src; <span class="keywordflow">return</span> src.<a class="code" href="classitpp_1_1Normal__RNG.html#10bf6949c45e781a36e967d9c8448614" title="Get a Normal distributed (0,1) sample.">sample</a>(); } |
---|
| 439 | <a name="l00629"></a><a class="code" href="group__randgen.html#g616ba8acf49bc0d2c2a61eb1073623e2">00629</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__randgen.html#gea540712c17237806666c2dad0ed6f35" title="Generates a random Gaussian (0,1) matrix.">randn</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>, vec &out) { <a class="code" href="classitpp_1_1Normal__RNG.html" title="Normal distributionNormal (Gaussian) random variables, using a simplified Ziggurat...">Normal_RNG</a> src; src.<a class="code" href="classitpp_1_1Normal__RNG.html#03e547de2b7ed75be013ab665a07c4e8" title="Get a Normal distributed (0,1) vector.">sample_vector</a>(size, out); } |
---|
| 440 | <a name="l00631"></a><a class="code" href="group__randgen.html#g1d6c0886ce845add07826fd360bdab45">00631</a> <span class="keyword">inline</span> vec <a class="code" href="group__randgen.html#gea540712c17237806666c2dad0ed6f35" title="Generates a random Gaussian (0,1) matrix.">randn</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>) { vec temp; <a class="code" href="group__randgen.html#gea540712c17237806666c2dad0ed6f35" title="Generates a random Gaussian (0,1) matrix.">randn</a>(size, temp); <span class="keywordflow">return</span> temp; } |
---|
| 441 | <a name="l00633"></a><a class="code" href="group__randgen.html#g65f4890bc86840235f95c2acbea6b3cb">00633</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__randgen.html#gea540712c17237806666c2dad0ed6f35" title="Generates a random Gaussian (0,1) matrix.">randn</a>(<span class="keywordtype">int</span> rows, <span class="keywordtype">int</span> cols, mat &out) { <a class="code" href="classitpp_1_1Normal__RNG.html" title="Normal distributionNormal (Gaussian) random variables, using a simplified Ziggurat...">Normal_RNG</a> src; src.<a class="code" href="classitpp_1_1Normal__RNG.html#7dab2664826b5e3e57c4087a50201bfd" title="Get a Normal distributed (0,1) matrix.">sample_matrix</a>(rows, cols, out); } |
---|
| 442 | <a name="l00635"></a><a class="code" href="group__randgen.html#gea540712c17237806666c2dad0ed6f35">00635</a> <span class="keyword">inline</span> mat <a class="code" href="group__randgen.html#gea540712c17237806666c2dad0ed6f35" title="Generates a random Gaussian (0,1) matrix.">randn</a>(<span class="keywordtype">int</span> rows, <span class="keywordtype">int</span> cols) { mat temp; <a class="code" href="group__randgen.html#gea540712c17237806666c2dad0ed6f35" title="Generates a random Gaussian (0,1) matrix.">randn</a>(rows, cols, temp); <span class="keywordflow">return</span> temp; } |
---|
| 443 | <a name="l00636"></a>00636 |
---|
| 444 | <a name="l00641"></a><a class="code" href="group__randgen.html#g3c0042e44132fb903d44e7c5a03f5db3">00641</a> <span class="keyword">inline</span> std::complex<double> <a class="code" href="group__randgen.html#g5c754dcd3476e028692bd13eb0cc548d" title="Generates a random complex Gaussian (0,1) matrix.">randn_c</a>(<span class="keywordtype">void</span>) { <a class="code" href="classitpp_1_1Complex__Normal__RNG.html" title="A Complex Normal Source.">Complex_Normal_RNG</a> src; <span class="keywordflow">return</span> src.<a class="code" href="classitpp_1_1Complex__Normal__RNG.html#f9cd78184319ed6ec1b6916cec4d4482" title="Get a Complex Normal (0,1) distributed sample.">sample</a>(); } |
---|
| 445 | <a name="l00643"></a><a class="code" href="group__randgen.html#g307273f122c93815641174fc75c9a985">00643</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__randgen.html#g5c754dcd3476e028692bd13eb0cc548d" title="Generates a random complex Gaussian (0,1) matrix.">randn_c</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>, cvec &out) { <a class="code" href="classitpp_1_1Complex__Normal__RNG.html" title="A Complex Normal Source.">Complex_Normal_RNG</a> src; src.<a class="code" href="classitpp_1_1Complex__Normal__RNG.html#7f2a2b96240917445295c847db708ba1" title="Get a Complex Normal (0,1) distributed vector.">sample_vector</a>(size, out); } |
---|
| 446 | <a name="l00645"></a><a class="code" href="group__randgen.html#gb83991583c36e80064a677df2b53739e">00645</a> <span class="keyword">inline</span> cvec <a class="code" href="group__randgen.html#g5c754dcd3476e028692bd13eb0cc548d" title="Generates a random complex Gaussian (0,1) matrix.">randn_c</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>) { cvec temp; <a class="code" href="group__randgen.html#g5c754dcd3476e028692bd13eb0cc548d" title="Generates a random complex Gaussian (0,1) matrix.">randn_c</a>(size, temp); <span class="keywordflow">return</span> temp; } |
---|
| 447 | <a name="l00647"></a><a class="code" href="group__randgen.html#g69f4508d8f1a63f8a7f637aaac0290e4">00647</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__randgen.html#g5c754dcd3476e028692bd13eb0cc548d" title="Generates a random complex Gaussian (0,1) matrix.">randn_c</a>(<span class="keywordtype">int</span> rows, <span class="keywordtype">int</span> cols, cmat &out) { <a class="code" href="classitpp_1_1Complex__Normal__RNG.html" title="A Complex Normal Source.">Complex_Normal_RNG</a> src; src.<a class="code" href="classitpp_1_1Complex__Normal__RNG.html#8977d88cd8bcc92b87edcf1f71df311f" title="Get a Complex Normal (0,1) distributed matrix.">sample_matrix</a>(rows, cols, out); } |
---|
| 448 | <a name="l00649"></a><a class="code" href="group__randgen.html#g5c754dcd3476e028692bd13eb0cc548d">00649</a> <span class="keyword">inline</span> cmat <a class="code" href="group__randgen.html#g5c754dcd3476e028692bd13eb0cc548d" title="Generates a random complex Gaussian (0,1) matrix.">randn_c</a>(<span class="keywordtype">int</span> rows, <span class="keywordtype">int</span> cols) { cmat temp; <a class="code" href="group__randgen.html#g5c754dcd3476e028692bd13eb0cc548d" title="Generates a random complex Gaussian (0,1) matrix.">randn_c</a>(rows, cols, temp); <span class="keywordflow">return</span> temp; } |
---|
| 449 | <a name="l00650"></a>00650 |
---|
| 450 | <a name="l00652"></a>00652 |
---|
| 451 | <a name="l00653"></a>00653 } <span class="comment">// namespace itpp</span> |
---|
| 452 | <a name="l00654"></a>00654 |
---|
| 453 | <a name="l00655"></a>00655 <span class="preprocessor">#endif // #ifndef RANDOM_H</span> |
---|
| 454 | </pre></div></div> |
---|
| 455 | <hr size="1"><address style="text-align: right;"><small>Generated on Tue Jun 2 10:02:12 2009 for mixpp by |
---|
| 456 | <a href="http://www.doxygen.org/index.html"> |
---|
| 457 | <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address> |
---|
| 458 | </body> |
---|
| 459 | </html> |
---|