chancejs
Version:
Various pseudo-random implementations packaged with helpful random utilities
106 lines (93 loc) • 9.29 kB
HTML
<html>
<meta charset='utf-8'>
<title>src/seeds/lagged_fibonnacci.coffee</title>
<head>
<link rel='stylesheet' media='all' href='docco.css'>
<link href='http://fonts.googleapis.com/css?family=Lato:300' rel='stylesheet' type='text/css'>
<script src='http://code.jquery.com/jquery-1.6.2.min.js' type='text/javascript' charset='utf-8'></script>
<script src='docco.js' type='text/javascript' charset='utf-8'></script>
<script>
$(document).ready(function(){
$('#menu').columnview();
$('#jump_show').click(function(){
$('#jump_to').toggleClass('visible')
})
var p = "src/seeds/lagged_fibonnacci.coffee".split('/')
var f = p.pop()
for(var i=0;i<p.length;i++){
var s = p[i] + "/"
$("#jump_page div a span.label").filter(function(){
return $(this).text() == s
}).parent().click()
}
$("#jump_page div a span.label").filter(function(){
return $(this).text() == f
}).last().parent().toggleClass('active')
})
</script>
</head>
<body>
<div id='container'>
<div id='jump_to'><div id='jump_page'>
<ul class='menu' id='menu'>
<li class='leaf'><a href='#'>src/</a><ul class='menu'><li class='leaf'><a href='src_random.html'>random.coffee</a></li><li class='leaf'><a href='#'>seeds/</a><ul class='menu'><li class='leaf'><a href='src_seeds_lagged_fibonnacci.html'>lagged_fibonnacci.coffee</a></li><li class='leaf'><a href='src_seeds_linear.html'>linear.coffee</a></li><li class='leaf'><a href='src_seeds_linear_congruential.html'>linear_congruential.coffee</a></li><li class='leaf'><a href='src_seeds_math_random.html'>math_random.coffee</a></li><li class='leaf'><a href='src_seeds_mersenne_twister.html'>mersenne_twister.coffee</a></li><li class='leaf'><a href='src_seeds_no_random.html'>no_random.coffee</a></li></ul></li></ul></li>
</ul>
</div>
<div id='jump_show'>
Jump To …
</div></div>
<table cellpadding='0' cellspacing='0'>
<tr>
<th class='docs'>
<h3>src/seeds/</h3>
<h1>lagged_fibonnacci.coffee</h1>
</th>
<th class='code'>
<pre></pre>
</th>
</tr>
<tr>
<td class='docs'></td>
<td class='code'><div class="highlight"><pre><span class="k">class</span> <span class="nb">LaggedFibonnacci</span>
<span class="py">constructor</span><span class="o">:</span> <span class="p">(</span><span class="nv">seed</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> <span class="o">-></span>
<span class="py">@plantSeed</span> <span class="nx">seed</span>
<span class="py">get</span><span class="o">:</span> <span class="o">-></span>
<span class="nv">uni </span><span class="o">=</span> <span class="py">@u</span><span class="p">[</span><span class="py">@i97</span><span class="p">]</span> <span class="o">-</span> <span class="py">@u</span><span class="p">[</span><span class="py">@j97</span><span class="p">]</span>
<span class="nx">uni</span> <span class="o">+=</span> <span class="mf">1.0</span> <span class="k">if</span> <span class="nx">uni</span> <span class="o"><</span> <span class="mf">0.0</span>
<span class="py">@u</span><span class="p">[</span><span class="py">@i97</span><span class="p">]</span> <span class="o">=</span> <span class="nx">uni</span>
<span class="py">@i97</span> <span class="o">=</span> <span class="mi">96</span> <span class="k">if</span> <span class="o">--</span><span class="py">@i97</span> <span class="o"><</span> <span class="mi">0</span>
<span class="py">@j97</span> <span class="o">=</span> <span class="mi">96</span> <span class="k">if</span> <span class="o">--</span><span class="py">@j97</span> <span class="o"><</span> <span class="mi">0</span>
<span class="py">@c</span> <span class="o">-=</span> <span class="py">@cd</span>
<span class="py">@c</span> <span class="o">+=</span> <span class="py">@cm</span> <span class="k">if</span> <span class="py">@c</span> <span class="o"><</span> <span class="mf">0.0</span>
<span class="nx">uni</span> <span class="o">-=</span> <span class="py">@c</span>
<span class="nx">uni</span> <span class="o">+=</span> <span class="mf">1.0</span> <span class="k">if</span> <span class="nx">uni</span> <span class="o"><</span> <span class="mf">0.0</span>
<span class="nx">uni</span>
<span class="py">plantSeed</span><span class="o">:</span><span class="p">(</span><span class="nv">seed</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> <span class="o">-></span>
<span class="py">@u</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Array</span> <span class="mi">97</span>
<span class="nv">ij </span><span class="o">=</span> <span class="nx">seed</span> <span class="o">/</span> <span class="mi">30082</span>
<span class="nv">kl </span><span class="o">=</span> <span class="nx">seed</span> <span class="o">-</span> <span class="mi">30082</span> <span class="o">*</span> <span class="nx">ij</span>
<span class="nv">i </span><span class="o">=</span> <span class="p">((</span><span class="nx">ij</span> <span class="o">/</span> <span class="mi">177</span><span class="p">)</span> <span class="o">%</span> <span class="mi">177</span><span class="p">)</span> <span class="o">+</span> <span class="mi">2</span>
<span class="nv">j </span><span class="o">=</span> <span class="p">(</span><span class="nx">ij</span> <span class="o">%</span> <span class="mi">177</span><span class="p">)</span> <span class="o">+</span> <span class="mi">2</span>
<span class="nv">k </span><span class="o">=</span> <span class="p">((</span><span class="nx">kl</span> <span class="o">/</span> <span class="mi">169</span><span class="p">)</span> <span class="o">%</span> <span class="mi">178</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span>
<span class="nv">l </span><span class="o">=</span> <span class="nx">kl</span> <span class="o">%</span> <span class="mi">169</span>
<span class="k">for</span> <span class="nx">ii</span> <span class="k">in</span> <span class="p">[</span><span class="mi">0</span><span class="p">..</span><span class="mi">96</span><span class="p">]</span>
<span class="p">[</span><span class="nx">s</span><span class="p">,</span><span class="nx">t</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="mf">0.0</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">]</span>
<span class="k">for</span> <span class="nx">jj</span> <span class="k">in</span> <span class="p">[</span><span class="mi">0</span><span class="p">..</span><span class="mi">23</span><span class="p">]</span>
<span class="nv">m </span><span class="o">=</span> <span class="p">(((</span><span class="nx">i</span> <span class="o">*</span> <span class="nx">j</span><span class="p">)</span> <span class="o">%</span> <span class="mi">179</span><span class="p">)</span> <span class="o">*</span> <span class="nx">k</span><span class="p">)</span> <span class="o">%</span> <span class="mi">179</span>
<span class="p">[</span><span class="nx">i</span><span class="p">,</span><span class="nx">j</span><span class="p">,</span><span class="nx">k</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="nx">j</span><span class="p">,</span><span class="nx">k</span><span class="p">,</span><span class="nx">m</span><span class="p">]</span>
<span class="nv">l </span><span class="o">=</span> <span class="p">(</span><span class="mi">53</span> <span class="o">*</span> <span class="nx">l</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">%</span> <span class="mi">169</span>
<span class="nx">s</span> <span class="o">+=</span> <span class="nx">t</span> <span class="k">if</span> <span class="p">(</span><span class="nx">l</span> <span class="o">*</span> <span class="nx">m</span><span class="p">)</span> <span class="o">%</span> <span class="mi">64</span> <span class="o">>=</span> <span class="mi">32</span>
<span class="nx">t</span> <span class="o">*=</span> <span class="mf">0.5</span>
<span class="py">@u</span><span class="p">[</span><span class="nx">ii</span><span class="p">]</span> <span class="o">=</span> <span class="nx">s</span>
<span class="py">@c</span> <span class="o">=</span> <span class="mf">362436.0</span> <span class="o">/</span> <span class="mf">16777216.0</span>
<span class="py">@cd</span> <span class="o">=</span> <span class="mf">7654321.0</span> <span class="o">/</span> <span class="mf">16777216.0</span>
<span class="py">@cm</span> <span class="o">=</span> <span class="mf">16777213.0</span> <span class="o">/</span> <span class="mf">16777216.0</span>
<span class="py">@i97</span> <span class="o">=</span> <span class="mi">96</span>
<span class="py">@j97</span> <span class="o">=</span> <span class="mi">32</span>
<span class="nv">module.exports </span><span class="o">=</span> <span class="nb">LaggedFibonnacci</span>
</pre></div></td>
</tr>
</table>
</div>
</body>
</html>