Added: 
websites/production/commons/content/proper/commons-rng/commons-rng-core/javadocs/api-1.1/src-html/org/apache/commons/rng/core/source32/AbstractWell.IndexTable.html
==============================================================================
--- 
websites/production/commons/content/proper/commons-rng/commons-rng-core/javadocs/api-1.1/src-html/org/apache/commons/rng/core/source32/AbstractWell.IndexTable.html
 (added)
+++ 
websites/production/commons/content/proper/commons-rng/commons-rng-core/javadocs/api-1.1/src-html/org/apache/commons/rng/core/source32/AbstractWell.IndexTable.html
 Tue Aug 14 12:48:23 2018
@@ -0,0 +1,273 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" 
href="../../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span><a name="line.1">/*</a>
+<span class="sourceLineNo">002</span><a name="line.2"> * Licensed to the 
Apache Software Foundation (ASF) under one or more</a>
+<span class="sourceLineNo">003</span><a name="line.3"> * contributor license 
agreements.  See the NOTICE file distributed with</a>
+<span class="sourceLineNo">004</span><a name="line.4"> * this work for 
additional information regarding copyright ownership.</a>
+<span class="sourceLineNo">005</span><a name="line.5"> * The ASF licenses this 
file to You under the Apache License, Version 2.0</a>
+<span class="sourceLineNo">006</span><a name="line.6"> * (the "License"); you 
may not use this file except in compliance with</a>
+<span class="sourceLineNo">007</span><a name="line.7"> * the License.  You may 
obtain a copy of the License at</a>
+<span class="sourceLineNo">008</span><a name="line.8"> *</a>
+<span class="sourceLineNo">009</span><a name="line.9"> *      
http://www.apache.org/licenses/LICENSE-2.0</a>
+<span class="sourceLineNo">010</span><a name="line.10"> *</a>
+<span class="sourceLineNo">011</span><a name="line.11"> * Unless required by 
applicable law or agreed to in writing, software</a>
+<span class="sourceLineNo">012</span><a name="line.12"> * distributed under 
the License is distributed on an "AS IS" BASIS,</a>
+<span class="sourceLineNo">013</span><a name="line.13"> * WITHOUT WARRANTIES 
OR CONDITIONS OF ANY KIND, either express or implied.</a>
+<span class="sourceLineNo">014</span><a name="line.14"> * See the License for 
the specific language governing permissions and</a>
+<span class="sourceLineNo">015</span><a name="line.15"> * limitations under 
the License.</a>
+<span class="sourceLineNo">016</span><a name="line.16"> */</a>
+<span class="sourceLineNo">017</span><a name="line.17">package 
org.apache.commons.rng.core.source32;</a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19">import 
java.util.Arrays;</a>
+<span class="sourceLineNo">020</span><a name="line.20">import 
org.apache.commons.rng.core.util.NumberFactory;</a>
+<span class="sourceLineNo">021</span><a name="line.21"></a>
+<span class="sourceLineNo">022</span><a name="line.22">/**</a>
+<span class="sourceLineNo">023</span><a name="line.23"> * This abstract class 
implements the WELL class of pseudo-random number</a>
+<span class="sourceLineNo">024</span><a name="line.24"> * generator from 
Fran&amp;ccedil;ois Panneton, Pierre L'Ecuyer and Makoto</a>
+<span class="sourceLineNo">025</span><a name="line.25"> * Matsumoto.</a>
+<span class="sourceLineNo">026</span><a name="line.26"> * &lt;p&gt;</a>
+<span class="sourceLineNo">027</span><a name="line.27"> * This generator is 
described in a paper by Fran&amp;ccedil;ois Panneton,</a>
+<span class="sourceLineNo">028</span><a name="line.28"> * Pierre L'Ecuyer and 
Makoto Matsumoto</a>
+<span class="sourceLineNo">029</span><a name="line.29"> * &lt;a 
href="http://www.iro.umontreal.ca/~lecuyer/myftp/papers/wellrng.pdf"&gt;</a>
+<span class="sourceLineNo">030</span><a name="line.30"> * Improved Long-Period 
Generators Based on Linear Recurrences Modulo 2&lt;/a&gt;</a>
+<span class="sourceLineNo">031</span><a name="line.31"> * ACM Transactions on 
Mathematical Software, 32, 1 (2006).</a>
+<span class="sourceLineNo">032</span><a name="line.32"> * The errata for the 
paper are in</a>
+<span class="sourceLineNo">033</span><a name="line.33"> * &lt;a 
href="http://www.iro.umontreal.ca/~lecuyer/myftp/papers/wellrng-errata.txt"&gt;wellrng-errata.txt&lt;/a&gt;.</a>
+<span class="sourceLineNo">034</span><a name="line.34"> * &lt;/p&gt;</a>
+<span class="sourceLineNo">035</span><a name="line.35"> *</a>
+<span class="sourceLineNo">036</span><a name="line.36"> * @see &lt;a 
href="http://www.iro.umontreal.ca/~panneton/WELLRNG.html"&gt;WELL Random number 
generator&lt;/a&gt;</a>
+<span class="sourceLineNo">037</span><a name="line.37"> *</a>
+<span class="sourceLineNo">038</span><a name="line.38"> * @since 1.0</a>
+<span class="sourceLineNo">039</span><a name="line.39"> */</a>
+<span class="sourceLineNo">040</span><a name="line.40">public abstract class 
AbstractWell extends IntProvider {</a>
+<span class="sourceLineNo">041</span><a name="line.41">    /** Block size. 
*/</a>
+<span class="sourceLineNo">042</span><a name="line.42">    private static 
final int BLOCK_SIZE = 32;</a>
+<span class="sourceLineNo">043</span><a name="line.43">    /** Current index 
in the bytes pool. */</a>
+<span class="sourceLineNo">044</span><a name="line.44">    protected int 
index;</a>
+<span class="sourceLineNo">045</span><a name="line.45">    /** Bytes pool. 
*/</a>
+<span class="sourceLineNo">046</span><a name="line.46">    protected final 
int[] v;</a>
+<span class="sourceLineNo">047</span><a name="line.47"></a>
+<span class="sourceLineNo">048</span><a name="line.48">    /**</a>
+<span class="sourceLineNo">049</span><a name="line.49">     * Creates an 
instance with the given {@code seed}.</a>
+<span class="sourceLineNo">050</span><a name="line.50">     *</a>
+<span class="sourceLineNo">051</span><a name="line.51">     * @param k Number 
of bits in the pool (not necessarily a multiple of 32).</a>
+<span class="sourceLineNo">052</span><a name="line.52">     * @param seed 
Initial seed.</a>
+<span class="sourceLineNo">053</span><a name="line.53">     */</a>
+<span class="sourceLineNo">054</span><a name="line.54">    protected 
AbstractWell(final int k,</a>
+<span class="sourceLineNo">055</span><a name="line.55">                        
   final int[] seed) {</a>
+<span class="sourceLineNo">056</span><a name="line.56">        final int r = 
calculateBlockCount(k);</a>
+<span class="sourceLineNo">057</span><a name="line.57">        v = new 
int[r];</a>
+<span class="sourceLineNo">058</span><a name="line.58">        index = 0;</a>
+<span class="sourceLineNo">059</span><a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60">        // Initialize 
the pool content.</a>
+<span class="sourceLineNo">061</span><a name="line.61">        
setSeedInternal(seed);</a>
+<span class="sourceLineNo">062</span><a name="line.62">    }</a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64">    /** {@inheritDoc} 
*/</a>
+<span class="sourceLineNo">065</span><a name="line.65">    @Override</a>
+<span class="sourceLineNo">066</span><a name="line.66">    protected byte[] 
getStateInternal() {</a>
+<span class="sourceLineNo">067</span><a name="line.67">        final int[] s = 
Arrays.copyOf(v, v.length + 1);</a>
+<span class="sourceLineNo">068</span><a name="line.68">        s[v.length] = 
index;</a>
+<span class="sourceLineNo">069</span><a name="line.69"></a>
+<span class="sourceLineNo">070</span><a name="line.70">        return 
NumberFactory.makeByteArray(s);</a>
+<span class="sourceLineNo">071</span><a name="line.71">    }</a>
+<span class="sourceLineNo">072</span><a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73">    /** {@inheritDoc} 
*/</a>
+<span class="sourceLineNo">074</span><a name="line.74">    @Override</a>
+<span class="sourceLineNo">075</span><a name="line.75">    protected void 
setStateInternal(byte[] s) {</a>
+<span class="sourceLineNo">076</span><a name="line.76">        
checkStateSize(s, (v.length + 1) * 4);</a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78">        final int[] tmp 
= NumberFactory.makeIntArray(s);</a>
+<span class="sourceLineNo">079</span><a name="line.79">        
System.arraycopy(tmp, 0, v, 0, v.length);</a>
+<span class="sourceLineNo">080</span><a name="line.80">        index = 
tmp[v.length];</a>
+<span class="sourceLineNo">081</span><a name="line.81">    }</a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span><a name="line.83">    /**</a>
+<span class="sourceLineNo">084</span><a name="line.84">     * Initializes the 
generator with the given {@code seed}.</a>
+<span class="sourceLineNo">085</span><a name="line.85">     *</a>
+<span class="sourceLineNo">086</span><a name="line.86">     * @param seed 
Seed. Cannot be null.</a>
+<span class="sourceLineNo">087</span><a name="line.87">     */</a>
+<span class="sourceLineNo">088</span><a name="line.88">    private void 
setSeedInternal(final int[] seed) {</a>
+<span class="sourceLineNo">089</span><a name="line.89">        
System.arraycopy(seed, 0, v, 0, Math.min(seed.length, v.length));</a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span><a name="line.91">        if (seed.length 
&lt; v.length) {</a>
+<span class="sourceLineNo">092</span><a name="line.92">            for (int i 
= seed.length; i &lt; v.length; ++i) {</a>
+<span class="sourceLineNo">093</span><a name="line.93">                final 
long current = v[i - seed.length];</a>
+<span class="sourceLineNo">094</span><a name="line.94">                v[i] = 
(int) ((1812433253L * (current ^ (current &gt;&gt; 30)) + i) &amp; 
0xffffffffL);</a>
+<span class="sourceLineNo">095</span><a name="line.95">            }</a>
+<span class="sourceLineNo">096</span><a name="line.96">        }</a>
+<span class="sourceLineNo">097</span><a name="line.97"></a>
+<span class="sourceLineNo">098</span><a name="line.98">        index = 0;</a>
+<span class="sourceLineNo">099</span><a name="line.99">    }</a>
+<span class="sourceLineNo">100</span><a name="line.100"></a>
+<span class="sourceLineNo">101</span><a name="line.101">    /**</a>
+<span class="sourceLineNo">102</span><a name="line.102">     * Calculate the 
number of 32-bits blocks.</a>
+<span class="sourceLineNo">103</span><a name="line.103">     *</a>
+<span class="sourceLineNo">104</span><a name="line.104">     * @param k Number 
of bits in the pool (not necessarily a multiple of 32).</a>
+<span class="sourceLineNo">105</span><a name="line.105">     * @return the 
number of 32-bits blocks.</a>
+<span class="sourceLineNo">106</span><a name="line.106">     */</a>
+<span class="sourceLineNo">107</span><a name="line.107">    private static int 
calculateBlockCount(final int k) {</a>
+<span class="sourceLineNo">108</span><a name="line.108">        // The bits 
pool contains k bits, k = r w - p where r is the number</a>
+<span class="sourceLineNo">109</span><a name="line.109">        // of w bits 
blocks, w is the block size (always 32 in the original paper)</a>
+<span class="sourceLineNo">110</span><a name="line.110">        // and p is 
the number of unused bits in the last block.</a>
+<span class="sourceLineNo">111</span><a name="line.111">        return (k + 
BLOCK_SIZE - 1) / BLOCK_SIZE;</a>
+<span class="sourceLineNo">112</span><a name="line.112">    }</a>
+<span class="sourceLineNo">113</span><a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114">    /**</a>
+<span class="sourceLineNo">115</span><a name="line.115">     * Inner class 
used to store the indirection index table which is fixed for a given</a>
+<span class="sourceLineNo">116</span><a name="line.116">     * type of WELL 
class of pseudo-random number generator.</a>
+<span class="sourceLineNo">117</span><a name="line.117">     */</a>
+<span class="sourceLineNo">118</span><a name="line.118">    protected static 
final class IndexTable {</a>
+<span class="sourceLineNo">119</span><a name="line.119">        /** Index 
indirection table giving for each index its predecessor taking table size into 
account. */</a>
+<span class="sourceLineNo">120</span><a name="line.120">        private final 
int[] iRm1;</a>
+<span class="sourceLineNo">121</span><a name="line.121">        /** Index 
indirection table giving for each index its second predecessor taking table 
size into account. */</a>
+<span class="sourceLineNo">122</span><a name="line.122">        private final 
int[] iRm2;</a>
+<span class="sourceLineNo">123</span><a name="line.123">        /** Index 
indirection table giving for each index the value index + m1 taking table size 
into account. */</a>
+<span class="sourceLineNo">124</span><a name="line.124">        private final 
int[] i1;</a>
+<span class="sourceLineNo">125</span><a name="line.125">        /** Index 
indirection table giving for each index the value index + m2 taking table size 
into account. */</a>
+<span class="sourceLineNo">126</span><a name="line.126">        private final 
int[] i2;</a>
+<span class="sourceLineNo">127</span><a name="line.127">        /** Index 
indirection table giving for each index the value index + m3 taking table size 
into account. */</a>
+<span class="sourceLineNo">128</span><a name="line.128">        private final 
int[] i3;</a>
+<span class="sourceLineNo">129</span><a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130">        /** Creates a 
new pre-calculated indirection index table.</a>
+<span class="sourceLineNo">131</span><a name="line.131">         * @param k 
number of bits in the pool (not necessarily a multiple of 32)</a>
+<span class="sourceLineNo">132</span><a name="line.132">         * @param m1 
first parameter of the algorithm</a>
+<span class="sourceLineNo">133</span><a name="line.133">         * @param m2 
second parameter of the algorithm</a>
+<span class="sourceLineNo">134</span><a name="line.134">         * @param m3 
third parameter of the algorithm</a>
+<span class="sourceLineNo">135</span><a name="line.135">         */</a>
+<span class="sourceLineNo">136</span><a name="line.136">        public 
IndexTable(final int k, final int m1, final int m2, final int m3) {</a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138">            final int 
r = calculateBlockCount(k);</a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140">            // 
precompute indirection index tables. These tables are used for optimizing 
access</a>
+<span class="sourceLineNo">141</span><a name="line.141">            // they 
allow saving computations like "(j + r - 2) % r" with costly modulo 
operations</a>
+<span class="sourceLineNo">142</span><a name="line.142">            iRm1 = new 
int[r];</a>
+<span class="sourceLineNo">143</span><a name="line.143">            iRm2 = new 
int[r];</a>
+<span class="sourceLineNo">144</span><a name="line.144">            i1 = new 
int[r];</a>
+<span class="sourceLineNo">145</span><a name="line.145">            i2 = new 
int[r];</a>
+<span class="sourceLineNo">146</span><a name="line.146">            i3 = new 
int[r];</a>
+<span class="sourceLineNo">147</span><a name="line.147">            for (int j 
= 0; j &lt; r; ++j) {</a>
+<span class="sourceLineNo">148</span><a name="line.148">                
iRm1[j] = (j + r - 1) % r;</a>
+<span class="sourceLineNo">149</span><a name="line.149">                
iRm2[j] = (j + r - 2) % r;</a>
+<span class="sourceLineNo">150</span><a name="line.150">                i1[j] 
= (j + m1) % r;</a>
+<span class="sourceLineNo">151</span><a name="line.151">                i2[j] 
= (j + m2) % r;</a>
+<span class="sourceLineNo">152</span><a name="line.152">                i3[j] 
= (j + m3) % r;</a>
+<span class="sourceLineNo">153</span><a name="line.153">            }</a>
+<span class="sourceLineNo">154</span><a name="line.154">        }</a>
+<span class="sourceLineNo">155</span><a name="line.155"></a>
+<span class="sourceLineNo">156</span><a name="line.156">        /**</a>
+<span class="sourceLineNo">157</span><a name="line.157">         * Returns the 
predecessor of the given index modulo the table size.</a>
+<span class="sourceLineNo">158</span><a name="line.158">         * @param 
index the index to look at</a>
+<span class="sourceLineNo">159</span><a name="line.159">         * @return 
(index - 1) % table size</a>
+<span class="sourceLineNo">160</span><a name="line.160">         */</a>
+<span class="sourceLineNo">161</span><a name="line.161">        public int 
getIndexPred(final int index) {</a>
+<span class="sourceLineNo">162</span><a name="line.162">            return 
iRm1[index];</a>
+<span class="sourceLineNo">163</span><a name="line.163">        }</a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span><a name="line.165">        /**</a>
+<span class="sourceLineNo">166</span><a name="line.166">         * Returns the 
second predecessor of the given index modulo the table size.</a>
+<span class="sourceLineNo">167</span><a name="line.167">         * @param 
index the index to look at</a>
+<span class="sourceLineNo">168</span><a name="line.168">         * @return 
(index - 2) % table size</a>
+<span class="sourceLineNo">169</span><a name="line.169">         */</a>
+<span class="sourceLineNo">170</span><a name="line.170">        public int 
getIndexPred2(final int index) {</a>
+<span class="sourceLineNo">171</span><a name="line.171">            return 
iRm2[index];</a>
+<span class="sourceLineNo">172</span><a name="line.172">        }</a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span><a name="line.174">        /**</a>
+<span class="sourceLineNo">175</span><a name="line.175">         * Returns 
index + M1 modulo the table size.</a>
+<span class="sourceLineNo">176</span><a name="line.176">         * @param 
index the index to look at</a>
+<span class="sourceLineNo">177</span><a name="line.177">         * @return 
(index + M1) % table size</a>
+<span class="sourceLineNo">178</span><a name="line.178">         */</a>
+<span class="sourceLineNo">179</span><a name="line.179">        public int 
getIndexM1(final int index) {</a>
+<span class="sourceLineNo">180</span><a name="line.180">            return 
i1[index];</a>
+<span class="sourceLineNo">181</span><a name="line.181">        }</a>
+<span class="sourceLineNo">182</span><a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183">        /**</a>
+<span class="sourceLineNo">184</span><a name="line.184">         * Returns 
index + M2 modulo the table size.</a>
+<span class="sourceLineNo">185</span><a name="line.185">         * @param 
index the index to look at</a>
+<span class="sourceLineNo">186</span><a name="line.186">         * @return 
(index + M2) % table size</a>
+<span class="sourceLineNo">187</span><a name="line.187">         */</a>
+<span class="sourceLineNo">188</span><a name="line.188">        public int 
getIndexM2(final int index) {</a>
+<span class="sourceLineNo">189</span><a name="line.189">            return 
i2[index];</a>
+<span class="sourceLineNo">190</span><a name="line.190">        }</a>
+<span class="sourceLineNo">191</span><a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192">        /**</a>
+<span class="sourceLineNo">193</span><a name="line.193">         * Returns 
index + M3 modulo the table size.</a>
+<span class="sourceLineNo">194</span><a name="line.194">         * @param 
index the index to look at</a>
+<span class="sourceLineNo">195</span><a name="line.195">         * @return 
(index + M3) % table size</a>
+<span class="sourceLineNo">196</span><a name="line.196">         */</a>
+<span class="sourceLineNo">197</span><a name="line.197">        public int 
getIndexM3(final int index) {</a>
+<span class="sourceLineNo">198</span><a name="line.198">            return 
i3[index];</a>
+<span class="sourceLineNo">199</span><a name="line.199">        }</a>
+<span class="sourceLineNo">200</span><a name="line.200">    }</a>
+<span class="sourceLineNo">201</span><a name="line.201">}</a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

Added: 
websites/production/commons/content/proper/commons-rng/commons-rng-core/javadocs/api-1.1/src-html/org/apache/commons/rng/core/source32/AbstractWell.html
==============================================================================
--- 
websites/production/commons/content/proper/commons-rng/commons-rng-core/javadocs/api-1.1/src-html/org/apache/commons/rng/core/source32/AbstractWell.html
 (added)
+++ 
websites/production/commons/content/proper/commons-rng/commons-rng-core/javadocs/api-1.1/src-html/org/apache/commons/rng/core/source32/AbstractWell.html
 Tue Aug 14 12:48:23 2018
@@ -0,0 +1,273 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" 
href="../../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span><a name="line.1">/*</a>
+<span class="sourceLineNo">002</span><a name="line.2"> * Licensed to the 
Apache Software Foundation (ASF) under one or more</a>
+<span class="sourceLineNo">003</span><a name="line.3"> * contributor license 
agreements.  See the NOTICE file distributed with</a>
+<span class="sourceLineNo">004</span><a name="line.4"> * this work for 
additional information regarding copyright ownership.</a>
+<span class="sourceLineNo">005</span><a name="line.5"> * The ASF licenses this 
file to You under the Apache License, Version 2.0</a>
+<span class="sourceLineNo">006</span><a name="line.6"> * (the "License"); you 
may not use this file except in compliance with</a>
+<span class="sourceLineNo">007</span><a name="line.7"> * the License.  You may 
obtain a copy of the License at</a>
+<span class="sourceLineNo">008</span><a name="line.8"> *</a>
+<span class="sourceLineNo">009</span><a name="line.9"> *      
http://www.apache.org/licenses/LICENSE-2.0</a>
+<span class="sourceLineNo">010</span><a name="line.10"> *</a>
+<span class="sourceLineNo">011</span><a name="line.11"> * Unless required by 
applicable law or agreed to in writing, software</a>
+<span class="sourceLineNo">012</span><a name="line.12"> * distributed under 
the License is distributed on an "AS IS" BASIS,</a>
+<span class="sourceLineNo">013</span><a name="line.13"> * WITHOUT WARRANTIES 
OR CONDITIONS OF ANY KIND, either express or implied.</a>
+<span class="sourceLineNo">014</span><a name="line.14"> * See the License for 
the specific language governing permissions and</a>
+<span class="sourceLineNo">015</span><a name="line.15"> * limitations under 
the License.</a>
+<span class="sourceLineNo">016</span><a name="line.16"> */</a>
+<span class="sourceLineNo">017</span><a name="line.17">package 
org.apache.commons.rng.core.source32;</a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19">import 
java.util.Arrays;</a>
+<span class="sourceLineNo">020</span><a name="line.20">import 
org.apache.commons.rng.core.util.NumberFactory;</a>
+<span class="sourceLineNo">021</span><a name="line.21"></a>
+<span class="sourceLineNo">022</span><a name="line.22">/**</a>
+<span class="sourceLineNo">023</span><a name="line.23"> * This abstract class 
implements the WELL class of pseudo-random number</a>
+<span class="sourceLineNo">024</span><a name="line.24"> * generator from 
Fran&amp;ccedil;ois Panneton, Pierre L'Ecuyer and Makoto</a>
+<span class="sourceLineNo">025</span><a name="line.25"> * Matsumoto.</a>
+<span class="sourceLineNo">026</span><a name="line.26"> * &lt;p&gt;</a>
+<span class="sourceLineNo">027</span><a name="line.27"> * This generator is 
described in a paper by Fran&amp;ccedil;ois Panneton,</a>
+<span class="sourceLineNo">028</span><a name="line.28"> * Pierre L'Ecuyer and 
Makoto Matsumoto</a>
+<span class="sourceLineNo">029</span><a name="line.29"> * &lt;a 
href="http://www.iro.umontreal.ca/~lecuyer/myftp/papers/wellrng.pdf"&gt;</a>
+<span class="sourceLineNo">030</span><a name="line.30"> * Improved Long-Period 
Generators Based on Linear Recurrences Modulo 2&lt;/a&gt;</a>
+<span class="sourceLineNo">031</span><a name="line.31"> * ACM Transactions on 
Mathematical Software, 32, 1 (2006).</a>
+<span class="sourceLineNo">032</span><a name="line.32"> * The errata for the 
paper are in</a>
+<span class="sourceLineNo">033</span><a name="line.33"> * &lt;a 
href="http://www.iro.umontreal.ca/~lecuyer/myftp/papers/wellrng-errata.txt"&gt;wellrng-errata.txt&lt;/a&gt;.</a>
+<span class="sourceLineNo">034</span><a name="line.34"> * &lt;/p&gt;</a>
+<span class="sourceLineNo">035</span><a name="line.35"> *</a>
+<span class="sourceLineNo">036</span><a name="line.36"> * @see &lt;a 
href="http://www.iro.umontreal.ca/~panneton/WELLRNG.html"&gt;WELL Random number 
generator&lt;/a&gt;</a>
+<span class="sourceLineNo">037</span><a name="line.37"> *</a>
+<span class="sourceLineNo">038</span><a name="line.38"> * @since 1.0</a>
+<span class="sourceLineNo">039</span><a name="line.39"> */</a>
+<span class="sourceLineNo">040</span><a name="line.40">public abstract class 
AbstractWell extends IntProvider {</a>
+<span class="sourceLineNo">041</span><a name="line.41">    /** Block size. 
*/</a>
+<span class="sourceLineNo">042</span><a name="line.42">    private static 
final int BLOCK_SIZE = 32;</a>
+<span class="sourceLineNo">043</span><a name="line.43">    /** Current index 
in the bytes pool. */</a>
+<span class="sourceLineNo">044</span><a name="line.44">    protected int 
index;</a>
+<span class="sourceLineNo">045</span><a name="line.45">    /** Bytes pool. 
*/</a>
+<span class="sourceLineNo">046</span><a name="line.46">    protected final 
int[] v;</a>
+<span class="sourceLineNo">047</span><a name="line.47"></a>
+<span class="sourceLineNo">048</span><a name="line.48">    /**</a>
+<span class="sourceLineNo">049</span><a name="line.49">     * Creates an 
instance with the given {@code seed}.</a>
+<span class="sourceLineNo">050</span><a name="line.50">     *</a>
+<span class="sourceLineNo">051</span><a name="line.51">     * @param k Number 
of bits in the pool (not necessarily a multiple of 32).</a>
+<span class="sourceLineNo">052</span><a name="line.52">     * @param seed 
Initial seed.</a>
+<span class="sourceLineNo">053</span><a name="line.53">     */</a>
+<span class="sourceLineNo">054</span><a name="line.54">    protected 
AbstractWell(final int k,</a>
+<span class="sourceLineNo">055</span><a name="line.55">                        
   final int[] seed) {</a>
+<span class="sourceLineNo">056</span><a name="line.56">        final int r = 
calculateBlockCount(k);</a>
+<span class="sourceLineNo">057</span><a name="line.57">        v = new 
int[r];</a>
+<span class="sourceLineNo">058</span><a name="line.58">        index = 0;</a>
+<span class="sourceLineNo">059</span><a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60">        // Initialize 
the pool content.</a>
+<span class="sourceLineNo">061</span><a name="line.61">        
setSeedInternal(seed);</a>
+<span class="sourceLineNo">062</span><a name="line.62">    }</a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64">    /** {@inheritDoc} 
*/</a>
+<span class="sourceLineNo">065</span><a name="line.65">    @Override</a>
+<span class="sourceLineNo">066</span><a name="line.66">    protected byte[] 
getStateInternal() {</a>
+<span class="sourceLineNo">067</span><a name="line.67">        final int[] s = 
Arrays.copyOf(v, v.length + 1);</a>
+<span class="sourceLineNo">068</span><a name="line.68">        s[v.length] = 
index;</a>
+<span class="sourceLineNo">069</span><a name="line.69"></a>
+<span class="sourceLineNo">070</span><a name="line.70">        return 
NumberFactory.makeByteArray(s);</a>
+<span class="sourceLineNo">071</span><a name="line.71">    }</a>
+<span class="sourceLineNo">072</span><a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73">    /** {@inheritDoc} 
*/</a>
+<span class="sourceLineNo">074</span><a name="line.74">    @Override</a>
+<span class="sourceLineNo">075</span><a name="line.75">    protected void 
setStateInternal(byte[] s) {</a>
+<span class="sourceLineNo">076</span><a name="line.76">        
checkStateSize(s, (v.length + 1) * 4);</a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78">        final int[] tmp 
= NumberFactory.makeIntArray(s);</a>
+<span class="sourceLineNo">079</span><a name="line.79">        
System.arraycopy(tmp, 0, v, 0, v.length);</a>
+<span class="sourceLineNo">080</span><a name="line.80">        index = 
tmp[v.length];</a>
+<span class="sourceLineNo">081</span><a name="line.81">    }</a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span><a name="line.83">    /**</a>
+<span class="sourceLineNo">084</span><a name="line.84">     * Initializes the 
generator with the given {@code seed}.</a>
+<span class="sourceLineNo">085</span><a name="line.85">     *</a>
+<span class="sourceLineNo">086</span><a name="line.86">     * @param seed 
Seed. Cannot be null.</a>
+<span class="sourceLineNo">087</span><a name="line.87">     */</a>
+<span class="sourceLineNo">088</span><a name="line.88">    private void 
setSeedInternal(final int[] seed) {</a>
+<span class="sourceLineNo">089</span><a name="line.89">        
System.arraycopy(seed, 0, v, 0, Math.min(seed.length, v.length));</a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span><a name="line.91">        if (seed.length 
&lt; v.length) {</a>
+<span class="sourceLineNo">092</span><a name="line.92">            for (int i 
= seed.length; i &lt; v.length; ++i) {</a>
+<span class="sourceLineNo">093</span><a name="line.93">                final 
long current = v[i - seed.length];</a>
+<span class="sourceLineNo">094</span><a name="line.94">                v[i] = 
(int) ((1812433253L * (current ^ (current &gt;&gt; 30)) + i) &amp; 
0xffffffffL);</a>
+<span class="sourceLineNo">095</span><a name="line.95">            }</a>
+<span class="sourceLineNo">096</span><a name="line.96">        }</a>
+<span class="sourceLineNo">097</span><a name="line.97"></a>
+<span class="sourceLineNo">098</span><a name="line.98">        index = 0;</a>
+<span class="sourceLineNo">099</span><a name="line.99">    }</a>
+<span class="sourceLineNo">100</span><a name="line.100"></a>
+<span class="sourceLineNo">101</span><a name="line.101">    /**</a>
+<span class="sourceLineNo">102</span><a name="line.102">     * Calculate the 
number of 32-bits blocks.</a>
+<span class="sourceLineNo">103</span><a name="line.103">     *</a>
+<span class="sourceLineNo">104</span><a name="line.104">     * @param k Number 
of bits in the pool (not necessarily a multiple of 32).</a>
+<span class="sourceLineNo">105</span><a name="line.105">     * @return the 
number of 32-bits blocks.</a>
+<span class="sourceLineNo">106</span><a name="line.106">     */</a>
+<span class="sourceLineNo">107</span><a name="line.107">    private static int 
calculateBlockCount(final int k) {</a>
+<span class="sourceLineNo">108</span><a name="line.108">        // The bits 
pool contains k bits, k = r w - p where r is the number</a>
+<span class="sourceLineNo">109</span><a name="line.109">        // of w bits 
blocks, w is the block size (always 32 in the original paper)</a>
+<span class="sourceLineNo">110</span><a name="line.110">        // and p is 
the number of unused bits in the last block.</a>
+<span class="sourceLineNo">111</span><a name="line.111">        return (k + 
BLOCK_SIZE - 1) / BLOCK_SIZE;</a>
+<span class="sourceLineNo">112</span><a name="line.112">    }</a>
+<span class="sourceLineNo">113</span><a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114">    /**</a>
+<span class="sourceLineNo">115</span><a name="line.115">     * Inner class 
used to store the indirection index table which is fixed for a given</a>
+<span class="sourceLineNo">116</span><a name="line.116">     * type of WELL 
class of pseudo-random number generator.</a>
+<span class="sourceLineNo">117</span><a name="line.117">     */</a>
+<span class="sourceLineNo">118</span><a name="line.118">    protected static 
final class IndexTable {</a>
+<span class="sourceLineNo">119</span><a name="line.119">        /** Index 
indirection table giving for each index its predecessor taking table size into 
account. */</a>
+<span class="sourceLineNo">120</span><a name="line.120">        private final 
int[] iRm1;</a>
+<span class="sourceLineNo">121</span><a name="line.121">        /** Index 
indirection table giving for each index its second predecessor taking table 
size into account. */</a>
+<span class="sourceLineNo">122</span><a name="line.122">        private final 
int[] iRm2;</a>
+<span class="sourceLineNo">123</span><a name="line.123">        /** Index 
indirection table giving for each index the value index + m1 taking table size 
into account. */</a>
+<span class="sourceLineNo">124</span><a name="line.124">        private final 
int[] i1;</a>
+<span class="sourceLineNo">125</span><a name="line.125">        /** Index 
indirection table giving for each index the value index + m2 taking table size 
into account. */</a>
+<span class="sourceLineNo">126</span><a name="line.126">        private final 
int[] i2;</a>
+<span class="sourceLineNo">127</span><a name="line.127">        /** Index 
indirection table giving for each index the value index + m3 taking table size 
into account. */</a>
+<span class="sourceLineNo">128</span><a name="line.128">        private final 
int[] i3;</a>
+<span class="sourceLineNo">129</span><a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130">        /** Creates a 
new pre-calculated indirection index table.</a>
+<span class="sourceLineNo">131</span><a name="line.131">         * @param k 
number of bits in the pool (not necessarily a multiple of 32)</a>
+<span class="sourceLineNo">132</span><a name="line.132">         * @param m1 
first parameter of the algorithm</a>
+<span class="sourceLineNo">133</span><a name="line.133">         * @param m2 
second parameter of the algorithm</a>
+<span class="sourceLineNo">134</span><a name="line.134">         * @param m3 
third parameter of the algorithm</a>
+<span class="sourceLineNo">135</span><a name="line.135">         */</a>
+<span class="sourceLineNo">136</span><a name="line.136">        public 
IndexTable(final int k, final int m1, final int m2, final int m3) {</a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138">            final int 
r = calculateBlockCount(k);</a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140">            // 
precompute indirection index tables. These tables are used for optimizing 
access</a>
+<span class="sourceLineNo">141</span><a name="line.141">            // they 
allow saving computations like "(j + r - 2) % r" with costly modulo 
operations</a>
+<span class="sourceLineNo">142</span><a name="line.142">            iRm1 = new 
int[r];</a>
+<span class="sourceLineNo">143</span><a name="line.143">            iRm2 = new 
int[r];</a>
+<span class="sourceLineNo">144</span><a name="line.144">            i1 = new 
int[r];</a>
+<span class="sourceLineNo">145</span><a name="line.145">            i2 = new 
int[r];</a>
+<span class="sourceLineNo">146</span><a name="line.146">            i3 = new 
int[r];</a>
+<span class="sourceLineNo">147</span><a name="line.147">            for (int j 
= 0; j &lt; r; ++j) {</a>
+<span class="sourceLineNo">148</span><a name="line.148">                
iRm1[j] = (j + r - 1) % r;</a>
+<span class="sourceLineNo">149</span><a name="line.149">                
iRm2[j] = (j + r - 2) % r;</a>
+<span class="sourceLineNo">150</span><a name="line.150">                i1[j] 
= (j + m1) % r;</a>
+<span class="sourceLineNo">151</span><a name="line.151">                i2[j] 
= (j + m2) % r;</a>
+<span class="sourceLineNo">152</span><a name="line.152">                i3[j] 
= (j + m3) % r;</a>
+<span class="sourceLineNo">153</span><a name="line.153">            }</a>
+<span class="sourceLineNo">154</span><a name="line.154">        }</a>
+<span class="sourceLineNo">155</span><a name="line.155"></a>
+<span class="sourceLineNo">156</span><a name="line.156">        /**</a>
+<span class="sourceLineNo">157</span><a name="line.157">         * Returns the 
predecessor of the given index modulo the table size.</a>
+<span class="sourceLineNo">158</span><a name="line.158">         * @param 
index the index to look at</a>
+<span class="sourceLineNo">159</span><a name="line.159">         * @return 
(index - 1) % table size</a>
+<span class="sourceLineNo">160</span><a name="line.160">         */</a>
+<span class="sourceLineNo">161</span><a name="line.161">        public int 
getIndexPred(final int index) {</a>
+<span class="sourceLineNo">162</span><a name="line.162">            return 
iRm1[index];</a>
+<span class="sourceLineNo">163</span><a name="line.163">        }</a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span><a name="line.165">        /**</a>
+<span class="sourceLineNo">166</span><a name="line.166">         * Returns the 
second predecessor of the given index modulo the table size.</a>
+<span class="sourceLineNo">167</span><a name="line.167">         * @param 
index the index to look at</a>
+<span class="sourceLineNo">168</span><a name="line.168">         * @return 
(index - 2) % table size</a>
+<span class="sourceLineNo">169</span><a name="line.169">         */</a>
+<span class="sourceLineNo">170</span><a name="line.170">        public int 
getIndexPred2(final int index) {</a>
+<span class="sourceLineNo">171</span><a name="line.171">            return 
iRm2[index];</a>
+<span class="sourceLineNo">172</span><a name="line.172">        }</a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span><a name="line.174">        /**</a>
+<span class="sourceLineNo">175</span><a name="line.175">         * Returns 
index + M1 modulo the table size.</a>
+<span class="sourceLineNo">176</span><a name="line.176">         * @param 
index the index to look at</a>
+<span class="sourceLineNo">177</span><a name="line.177">         * @return 
(index + M1) % table size</a>
+<span class="sourceLineNo">178</span><a name="line.178">         */</a>
+<span class="sourceLineNo">179</span><a name="line.179">        public int 
getIndexM1(final int index) {</a>
+<span class="sourceLineNo">180</span><a name="line.180">            return 
i1[index];</a>
+<span class="sourceLineNo">181</span><a name="line.181">        }</a>
+<span class="sourceLineNo">182</span><a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183">        /**</a>
+<span class="sourceLineNo">184</span><a name="line.184">         * Returns 
index + M2 modulo the table size.</a>
+<span class="sourceLineNo">185</span><a name="line.185">         * @param 
index the index to look at</a>
+<span class="sourceLineNo">186</span><a name="line.186">         * @return 
(index + M2) % table size</a>
+<span class="sourceLineNo">187</span><a name="line.187">         */</a>
+<span class="sourceLineNo">188</span><a name="line.188">        public int 
getIndexM2(final int index) {</a>
+<span class="sourceLineNo">189</span><a name="line.189">            return 
i2[index];</a>
+<span class="sourceLineNo">190</span><a name="line.190">        }</a>
+<span class="sourceLineNo">191</span><a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192">        /**</a>
+<span class="sourceLineNo">193</span><a name="line.193">         * Returns 
index + M3 modulo the table size.</a>
+<span class="sourceLineNo">194</span><a name="line.194">         * @param 
index the index to look at</a>
+<span class="sourceLineNo">195</span><a name="line.195">         * @return 
(index + M3) % table size</a>
+<span class="sourceLineNo">196</span><a name="line.196">         */</a>
+<span class="sourceLineNo">197</span><a name="line.197">        public int 
getIndexM3(final int index) {</a>
+<span class="sourceLineNo">198</span><a name="line.198">            return 
i3[index];</a>
+<span class="sourceLineNo">199</span><a name="line.199">        }</a>
+<span class="sourceLineNo">200</span><a name="line.200">    }</a>
+<span class="sourceLineNo">201</span><a name="line.201">}</a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

Added: 
websites/production/commons/content/proper/commons-rng/commons-rng-core/javadocs/api-1.1/src-html/org/apache/commons/rng/core/source32/ISAACRandom.html
==============================================================================
--- 
websites/production/commons/content/proper/commons-rng/commons-rng-core/javadocs/api-1.1/src-html/org/apache/commons/rng/core/source32/ISAACRandom.html
 (added)
+++ 
websites/production/commons/content/proper/commons-rng/commons-rng-core/javadocs/api-1.1/src-html/org/apache/commons/rng/core/source32/ISAACRandom.html
 Tue Aug 14 12:48:23 2018
@@ -0,0 +1,339 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" 
href="../../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span><a name="line.1">/*</a>
+<span class="sourceLineNo">002</span><a name="line.2"> * Licensed to the 
Apache Software Foundation (ASF) under one or more</a>
+<span class="sourceLineNo">003</span><a name="line.3"> * contributor license 
agreements.  See the NOTICE file distributed with</a>
+<span class="sourceLineNo">004</span><a name="line.4"> * this work for 
additional information regarding copyright ownership.</a>
+<span class="sourceLineNo">005</span><a name="line.5"> * The ASF licenses this 
file to You under the Apache License, Version 2.0</a>
+<span class="sourceLineNo">006</span><a name="line.6"> * (the "License"); you 
may not use this file except in compliance with</a>
+<span class="sourceLineNo">007</span><a name="line.7"> * the License.  You may 
obtain a copy of the License at</a>
+<span class="sourceLineNo">008</span><a name="line.8"> *</a>
+<span class="sourceLineNo">009</span><a name="line.9"> *      
http://www.apache.org/licenses/LICENSE-2.0</a>
+<span class="sourceLineNo">010</span><a name="line.10"> *</a>
+<span class="sourceLineNo">011</span><a name="line.11"> * Unless required by 
applicable law or agreed to in writing, software</a>
+<span class="sourceLineNo">012</span><a name="line.12"> * distributed under 
the License is distributed on an "AS IS" BASIS,</a>
+<span class="sourceLineNo">013</span><a name="line.13"> * WITHOUT WARRANTIES 
OR CONDITIONS OF ANY KIND, either express or implied.</a>
+<span class="sourceLineNo">014</span><a name="line.14"> * See the License for 
the specific language governing permissions and</a>
+<span class="sourceLineNo">015</span><a name="line.15"> * limitations under 
the License.</a>
+<span class="sourceLineNo">016</span><a name="line.16"> */</a>
+<span class="sourceLineNo">017</span><a name="line.17"></a>
+<span class="sourceLineNo">018</span><a name="line.18">package 
org.apache.commons.rng.core.source32;</a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20">import 
java.util.Arrays;</a>
+<span class="sourceLineNo">021</span><a name="line.21">import 
org.apache.commons.rng.core.util.NumberFactory;</a>
+<span class="sourceLineNo">022</span><a name="line.22"></a>
+<span class="sourceLineNo">023</span><a name="line.23">/**</a>
+<span class="sourceLineNo">024</span><a name="line.24"> * A fast cryptographic 
pseudo-random number generator.</a>
+<span class="sourceLineNo">025</span><a name="line.25"> * &lt;p&gt;</a>
+<span class="sourceLineNo">026</span><a name="line.26"> * ISAAC (Indirection, 
Shift, Accumulate, Add, and Count) generates 32-bit</a>
+<span class="sourceLineNo">027</span><a name="line.27"> * random numbers.</a>
+<span class="sourceLineNo">028</span><a name="line.28"> * ISAAC has been 
designed to be cryptographically secure and is inspired</a>
+<span class="sourceLineNo">029</span><a name="line.29"> * by RC4.</a>
+<span class="sourceLineNo">030</span><a name="line.30"> * Cycles are 
guaranteed to be at least 2&lt;sup&gt;40&lt;/sup&gt; values long, and they</a>
+<span class="sourceLineNo">031</span><a name="line.31"> * are 
2&lt;sup&gt;8295&lt;/sup&gt; values long on average.</a>
+<span class="sourceLineNo">032</span><a name="line.32"> * The results are 
uniformly distributed, unbiased, and unpredictable unless</a>
+<span class="sourceLineNo">033</span><a name="line.33"> * you know the 
seed.</a>
+<span class="sourceLineNo">034</span><a name="line.34"> * &lt;p&gt;</a>
+<span class="sourceLineNo">035</span><a name="line.35"> * This code is based 
(with minor changes and improvements) on the original</a>
+<span class="sourceLineNo">036</span><a name="line.36"> * implementation of 
the algorithm by Bob Jenkins.</a>
+<span class="sourceLineNo">037</span><a name="line.37"> *</a>
+<span class="sourceLineNo">038</span><a name="line.38"> * @see &lt;a 
href="http://burtleburtle.net/bob/rand/isaacafa.html"&gt;</a>
+<span class="sourceLineNo">039</span><a name="line.39"> * ISAAC: a fast 
cryptographic pseudo-random number generator&lt;/a&gt;</a>
+<span class="sourceLineNo">040</span><a name="line.40"> *</a>
+<span class="sourceLineNo">041</span><a name="line.41"> * @see &lt;a 
href="https://en.wikipedia.org/wiki/ISAAC_(cipher)"&gt;ISAAC 
(Wikipedia)&lt;/a&gt;</a>
+<span class="sourceLineNo">042</span><a name="line.42"> * @since 1.0</a>
+<span class="sourceLineNo">043</span><a name="line.43"> */</a>
+<span class="sourceLineNo">044</span><a name="line.44">public class 
ISAACRandom extends IntProvider {</a>
+<span class="sourceLineNo">045</span><a name="line.45">    /** Log of size of 
rsl[] and mem[]. */</a>
+<span class="sourceLineNo">046</span><a name="line.46">    private static 
final int SIZE_L = 8;</a>
+<span class="sourceLineNo">047</span><a name="line.47">    /** Size of rsl[] 
and mem[]. */</a>
+<span class="sourceLineNo">048</span><a name="line.48">    private static 
final int SIZE = 1 &lt;&lt; SIZE_L;</a>
+<span class="sourceLineNo">049</span><a name="line.49">    /** Half-size of 
rsl[] and mem[]. */</a>
+<span class="sourceLineNo">050</span><a name="line.50">    private static 
final int H_SIZE = SIZE &gt;&gt; 1;</a>
+<span class="sourceLineNo">051</span><a name="line.51">    /** For 
pseudo-random lookup. */</a>
+<span class="sourceLineNo">052</span><a name="line.52">    private static 
final int MASK = SIZE - 1 &lt;&lt; 2;</a>
+<span class="sourceLineNo">053</span><a name="line.53">    /** The golden 
ratio. */</a>
+<span class="sourceLineNo">054</span><a name="line.54">    private static 
final int GLD_RATIO = 0x9e3779b9;</a>
+<span class="sourceLineNo">055</span><a name="line.55">    /** The results 
given to the user. */</a>
+<span class="sourceLineNo">056</span><a name="line.56">    private final int[] 
rsl = new int[SIZE];</a>
+<span class="sourceLineNo">057</span><a name="line.57">    /** The internal 
state. */</a>
+<span class="sourceLineNo">058</span><a name="line.58">    private final int[] 
mem = new int[SIZE];</a>
+<span class="sourceLineNo">059</span><a name="line.59">    /** Count through 
the results in rsl[]. */</a>
+<span class="sourceLineNo">060</span><a name="line.60">    private int 
count;</a>
+<span class="sourceLineNo">061</span><a name="line.61">    /** Accumulator. 
*/</a>
+<span class="sourceLineNo">062</span><a name="line.62">    private int 
isaacA;</a>
+<span class="sourceLineNo">063</span><a name="line.63">    /** The last 
result. */</a>
+<span class="sourceLineNo">064</span><a name="line.64">    private int 
isaacB;</a>
+<span class="sourceLineNo">065</span><a name="line.65">    /** Counter, 
guarantees cycle is at least 2^40. */</a>
+<span class="sourceLineNo">066</span><a name="line.66">    private int 
isaacC;</a>
+<span class="sourceLineNo">067</span><a name="line.67">    /** Service 
variable. */</a>
+<span class="sourceLineNo">068</span><a name="line.68">    private final int[] 
arr = new int[8];</a>
+<span class="sourceLineNo">069</span><a name="line.69">    /** Service 
variable. */</a>
+<span class="sourceLineNo">070</span><a name="line.70">    private int 
isaacX;</a>
+<span class="sourceLineNo">071</span><a name="line.71">    /** Service 
variable. */</a>
+<span class="sourceLineNo">072</span><a name="line.72">    private int 
isaacI;</a>
+<span class="sourceLineNo">073</span><a name="line.73">    /** Service 
variable. */</a>
+<span class="sourceLineNo">074</span><a name="line.74">    private int 
isaacJ;</a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76">    /**</a>
+<span class="sourceLineNo">077</span><a name="line.77">     * Creates a new 
ISAAC random number generator.</a>
+<span class="sourceLineNo">078</span><a name="line.78">     *</a>
+<span class="sourceLineNo">079</span><a name="line.79">     * @param seed 
Initial seed</a>
+<span class="sourceLineNo">080</span><a name="line.80">     */</a>
+<span class="sourceLineNo">081</span><a name="line.81">    public 
ISAACRandom(int[] seed) {</a>
+<span class="sourceLineNo">082</span><a name="line.82">        
setSeedInternal(seed);</a>
+<span class="sourceLineNo">083</span><a name="line.83">    }</a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85">    /** {@inheritDoc} 
*/</a>
+<span class="sourceLineNo">086</span><a name="line.86">    @Override</a>
+<span class="sourceLineNo">087</span><a name="line.87">    protected byte[] 
getStateInternal() {</a>
+<span class="sourceLineNo">088</span><a name="line.88">        final int[] 
sRsl = Arrays.copyOf(rsl, SIZE);</a>
+<span class="sourceLineNo">089</span><a name="line.89">        final int[] 
sMem = Arrays.copyOf(mem, SIZE);</a>
+<span class="sourceLineNo">090</span><a name="line.90">        final int[] 
sRem = Arrays.copyOf(new int[] { count, isaacA, isaacB, isaacC }, 4);</a>
+<span class="sourceLineNo">091</span><a name="line.91"></a>
+<span class="sourceLineNo">092</span><a name="line.92">        final int[] s = 
new int[2 * SIZE + sRem.length];</a>
+<span class="sourceLineNo">093</span><a name="line.93">        
System.arraycopy(sRsl, 0, s, 0, SIZE);</a>
+<span class="sourceLineNo">094</span><a name="line.94">        
System.arraycopy(sMem, 0, s, SIZE, SIZE);</a>
+<span class="sourceLineNo">095</span><a name="line.95">        
System.arraycopy(sRem, 0, s, 2 * SIZE, sRem.length);</a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span><a name="line.97">        return 
NumberFactory.makeByteArray(s);</a>
+<span class="sourceLineNo">098</span><a name="line.98">    }</a>
+<span class="sourceLineNo">099</span><a name="line.99"></a>
+<span class="sourceLineNo">100</span><a name="line.100">    /** {@inheritDoc} 
*/</a>
+<span class="sourceLineNo">101</span><a name="line.101">    @Override</a>
+<span class="sourceLineNo">102</span><a name="line.102">    protected void 
setStateInternal(byte[] s) {</a>
+<span class="sourceLineNo">103</span><a name="line.103">        
checkStateSize(s, (2 * SIZE + 4) * 4);</a>
+<span class="sourceLineNo">104</span><a name="line.104"></a>
+<span class="sourceLineNo">105</span><a name="line.105">        final int[] 
tmp = NumberFactory.makeIntArray(s);</a>
+<span class="sourceLineNo">106</span><a name="line.106">        
System.arraycopy(tmp, 0, rsl, 0, SIZE);</a>
+<span class="sourceLineNo">107</span><a name="line.107">        
System.arraycopy(tmp, SIZE, mem, 0, SIZE);</a>
+<span class="sourceLineNo">108</span><a name="line.108">        final int 
offset = 2 * SIZE;</a>
+<span class="sourceLineNo">109</span><a name="line.109">        count = 
tmp[offset];</a>
+<span class="sourceLineNo">110</span><a name="line.110">        isaacA = 
tmp[offset + 1];</a>
+<span class="sourceLineNo">111</span><a name="line.111">        isaacB = 
tmp[offset + 2];</a>
+<span class="sourceLineNo">112</span><a name="line.112">        isaacC = 
tmp[offset + 3];</a>
+<span class="sourceLineNo">113</span><a name="line.113">    }</a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span><a name="line.115">    /**</a>
+<span class="sourceLineNo">116</span><a name="line.116">     * Reseeds the 
RNG.</a>
+<span class="sourceLineNo">117</span><a name="line.117">     *</a>
+<span class="sourceLineNo">118</span><a name="line.118">     * @param seed 
Seed. Cannot be null.</a>
+<span class="sourceLineNo">119</span><a name="line.119">     */</a>
+<span class="sourceLineNo">120</span><a name="line.120">    private void 
setSeedInternal(int[] seed) {</a>
+<span class="sourceLineNo">121</span><a name="line.121">        final int 
seedLen = seed.length;</a>
+<span class="sourceLineNo">122</span><a name="line.122">        final int 
rslLen = rsl.length;</a>
+<span class="sourceLineNo">123</span><a name="line.123">        
System.arraycopy(seed, 0, rsl, 0, Math.min(seedLen, rslLen));</a>
+<span class="sourceLineNo">124</span><a name="line.124">        if (seedLen 
&lt; rslLen) {</a>
+<span class="sourceLineNo">125</span><a name="line.125">            for (int j 
= seedLen; j &lt; rslLen; j++) {</a>
+<span class="sourceLineNo">126</span><a name="line.126">                long k 
= rsl[j - seedLen];</a>
+<span class="sourceLineNo">127</span><a name="line.127">                rsl[j] 
= (int) (0x6c078965L * (k ^ k &gt;&gt; 30) + j &amp; 0xffffffffL);</a>
+<span class="sourceLineNo">128</span><a name="line.128">            }</a>
+<span class="sourceLineNo">129</span><a name="line.129">        }</a>
+<span class="sourceLineNo">130</span><a name="line.130">        
initState();</a>
+<span class="sourceLineNo">131</span><a name="line.131">    }</a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span><a name="line.133">    /** {@inheritDoc} 
*/</a>
+<span class="sourceLineNo">134</span><a name="line.134">    @Override</a>
+<span class="sourceLineNo">135</span><a name="line.135">    public int next() 
{</a>
+<span class="sourceLineNo">136</span><a name="line.136">        if (count &lt; 
0) {</a>
+<span class="sourceLineNo">137</span><a name="line.137">            
isaac();</a>
+<span class="sourceLineNo">138</span><a name="line.138">            count = 
SIZE - 1;</a>
+<span class="sourceLineNo">139</span><a name="line.139">        }</a>
+<span class="sourceLineNo">140</span><a name="line.140">        return 
rsl[count--];</a>
+<span class="sourceLineNo">141</span><a name="line.141">    }</a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143">    /** Generate 256 
results */</a>
+<span class="sourceLineNo">144</span><a name="line.144">    private void 
isaac() {</a>
+<span class="sourceLineNo">145</span><a name="line.145">        isaacI = 0;</a>
+<span class="sourceLineNo">146</span><a name="line.146">        isaacJ = 
H_SIZE;</a>
+<span class="sourceLineNo">147</span><a name="line.147">        isaacB += 
++isaacC;</a>
+<span class="sourceLineNo">148</span><a name="line.148">        while (isaacI 
&lt; H_SIZE) {</a>
+<span class="sourceLineNo">149</span><a name="line.149">            
isaac2();</a>
+<span class="sourceLineNo">150</span><a name="line.150">        }</a>
+<span class="sourceLineNo">151</span><a name="line.151">        isaacJ = 0;</a>
+<span class="sourceLineNo">152</span><a name="line.152">        while (isaacJ 
&lt; H_SIZE) {</a>
+<span class="sourceLineNo">153</span><a name="line.153">            
isaac2();</a>
+<span class="sourceLineNo">154</span><a name="line.154">        }</a>
+<span class="sourceLineNo">155</span><a name="line.155">    }</a>
+<span class="sourceLineNo">156</span><a name="line.156"></a>
+<span class="sourceLineNo">157</span><a name="line.157">    /** Intermediate 
internal loop. */</a>
+<span class="sourceLineNo">158</span><a name="line.158">    private void 
isaac2() {</a>
+<span class="sourceLineNo">159</span><a name="line.159">        isaacX = 
mem[isaacI];</a>
+<span class="sourceLineNo">160</span><a name="line.160">        isaacA ^= 
isaacA &lt;&lt; 13;</a>
+<span class="sourceLineNo">161</span><a name="line.161">        isaacA += 
mem[isaacJ++];</a>
+<span class="sourceLineNo">162</span><a name="line.162">        isaac3();</a>
+<span class="sourceLineNo">163</span><a name="line.163">        isaacX = 
mem[isaacI];</a>
+<span class="sourceLineNo">164</span><a name="line.164">        isaacA ^= 
isaacA &gt;&gt;&gt; 6;</a>
+<span class="sourceLineNo">165</span><a name="line.165">        isaacA += 
mem[isaacJ++];</a>
+<span class="sourceLineNo">166</span><a name="line.166">        isaac3();</a>
+<span class="sourceLineNo">167</span><a name="line.167">        isaacX = 
mem[isaacI];</a>
+<span class="sourceLineNo">168</span><a name="line.168">        isaacA ^= 
isaacA &lt;&lt; 2;</a>
+<span class="sourceLineNo">169</span><a name="line.169">        isaacA += 
mem[isaacJ++];</a>
+<span class="sourceLineNo">170</span><a name="line.170">        isaac3();</a>
+<span class="sourceLineNo">171</span><a name="line.171">        isaacX = 
mem[isaacI];</a>
+<span class="sourceLineNo">172</span><a name="line.172">        isaacA ^= 
isaacA &gt;&gt;&gt; 16;</a>
+<span class="sourceLineNo">173</span><a name="line.173">        isaacA += 
mem[isaacJ++];</a>
+<span class="sourceLineNo">174</span><a name="line.174">        isaac3();</a>
+<span class="sourceLineNo">175</span><a name="line.175">    }</a>
+<span class="sourceLineNo">176</span><a name="line.176"></a>
+<span class="sourceLineNo">177</span><a name="line.177">    /** Lowest level 
internal loop. */</a>
+<span class="sourceLineNo">178</span><a name="line.178">    private void 
isaac3() {</a>
+<span class="sourceLineNo">179</span><a name="line.179">        mem[isaacI] = 
mem[(isaacX &amp; MASK) &gt;&gt; 2] + isaacA + isaacB;</a>
+<span class="sourceLineNo">180</span><a name="line.180">        isaacB = 
mem[(mem[isaacI] &gt;&gt; SIZE_L &amp; MASK) &gt;&gt; 2] + isaacX;</a>
+<span class="sourceLineNo">181</span><a name="line.181">        rsl[isaacI++] 
= isaacB;</a>
+<span class="sourceLineNo">182</span><a name="line.182">    }</a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184">    /** Initialize, or 
reinitialize, this instance of rand. */</a>
+<span class="sourceLineNo">185</span><a name="line.185">    private void 
initState() {</a>
+<span class="sourceLineNo">186</span><a name="line.186">        isaacA = 0;</a>
+<span class="sourceLineNo">187</span><a name="line.187">        isaacB = 0;</a>
+<span class="sourceLineNo">188</span><a name="line.188">        isaacC = 0;</a>
+<span class="sourceLineNo">189</span><a name="line.189">        for (int j = 
0; j &lt; arr.length; j++) {</a>
+<span class="sourceLineNo">190</span><a name="line.190">            arr[j] = 
GLD_RATIO;</a>
+<span class="sourceLineNo">191</span><a name="line.191">        }</a>
+<span class="sourceLineNo">192</span><a name="line.192">        for (int j = 
0; j &lt; 4; j++) {</a>
+<span class="sourceLineNo">193</span><a name="line.193">            
shuffle();</a>
+<span class="sourceLineNo">194</span><a name="line.194">        }</a>
+<span class="sourceLineNo">195</span><a name="line.195">        // fill in 
mem[] with messy stuff</a>
+<span class="sourceLineNo">196</span><a name="line.196">        for (int j = 
0; j &lt; SIZE; j += 8) {</a>
+<span class="sourceLineNo">197</span><a name="line.197">            arr[0] += 
rsl[j];</a>
+<span class="sourceLineNo">198</span><a name="line.198">            arr[1] += 
rsl[j + 1];</a>
+<span class="sourceLineNo">199</span><a name="line.199">            arr[2] += 
rsl[j + 2];</a>
+<span class="sourceLineNo">200</span><a name="line.200">            arr[3] += 
rsl[j + 3];</a>
+<span class="sourceLineNo">201</span><a name="line.201">            arr[4] += 
rsl[j + 4];</a>
+<span class="sourceLineNo">202</span><a name="line.202">            arr[5] += 
rsl[j + 5];</a>
+<span class="sourceLineNo">203</span><a name="line.203">            arr[6] += 
rsl[j + 6];</a>
+<span class="sourceLineNo">204</span><a name="line.204">            arr[7] += 
rsl[j + 7];</a>
+<span class="sourceLineNo">205</span><a name="line.205">            
shuffle();</a>
+<span class="sourceLineNo">206</span><a name="line.206">            
setState(j);</a>
+<span class="sourceLineNo">207</span><a name="line.207">        }</a>
+<span class="sourceLineNo">208</span><a name="line.208">        // second pass 
makes all of seed affect all of mem</a>
+<span class="sourceLineNo">209</span><a name="line.209">        for (int j = 
0; j &lt; SIZE; j += 8) {</a>
+<span class="sourceLineNo">210</span><a name="line.210">            arr[0] += 
mem[j];</a>
+<span class="sourceLineNo">211</span><a name="line.211">            arr[1] += 
mem[j + 1];</a>
+<span class="sourceLineNo">212</span><a name="line.212">            arr[2] += 
mem[j + 2];</a>
+<span class="sourceLineNo">213</span><a name="line.213">            arr[3] += 
mem[j + 3];</a>
+<span class="sourceLineNo">214</span><a name="line.214">            arr[4] += 
mem[j + 4];</a>
+<span class="sourceLineNo">215</span><a name="line.215">            arr[5] += 
mem[j + 5];</a>
+<span class="sourceLineNo">216</span><a name="line.216">            arr[6] += 
mem[j + 6];</a>
+<span class="sourceLineNo">217</span><a name="line.217">            arr[7] += 
mem[j + 7];</a>
+<span class="sourceLineNo">218</span><a name="line.218">            
shuffle();</a>
+<span class="sourceLineNo">219</span><a name="line.219">            
setState(j);</a>
+<span class="sourceLineNo">220</span><a name="line.220">        }</a>
+<span class="sourceLineNo">221</span><a name="line.221">        isaac();</a>
+<span class="sourceLineNo">222</span><a name="line.222">        count = SIZE - 
1;</a>
+<span class="sourceLineNo">223</span><a name="line.223">    }</a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225">    /** Shuffle array. 
*/</a>
+<span class="sourceLineNo">226</span><a name="line.226">    private void 
shuffle() {</a>
+<span class="sourceLineNo">227</span><a name="line.227">        arr[0] ^= 
arr[1] &lt;&lt; 11;</a>
+<span class="sourceLineNo">228</span><a name="line.228">        arr[3] += 
arr[0];</a>
+<span class="sourceLineNo">229</span><a name="line.229">        arr[1] += 
arr[2];</a>
+<span class="sourceLineNo">230</span><a name="line.230">        arr[1] ^= 
arr[2] &gt;&gt;&gt; 2;</a>
+<span class="sourceLineNo">231</span><a name="line.231">        arr[4] += 
arr[1];</a>
+<span class="sourceLineNo">232</span><a name="line.232">        arr[2] += 
arr[3];</a>
+<span class="sourceLineNo">233</span><a name="line.233">        arr[2] ^= 
arr[3] &lt;&lt; 8;</a>
+<span class="sourceLineNo">234</span><a name="line.234">        arr[5] += 
arr[2];</a>
+<span class="sourceLineNo">235</span><a name="line.235">        arr[3] += 
arr[4];</a>
+<span class="sourceLineNo">236</span><a name="line.236">        arr[3] ^= 
arr[4] &gt;&gt;&gt; 16;</a>
+<span class="sourceLineNo">237</span><a name="line.237">        arr[6] += 
arr[3];</a>
+<span class="sourceLineNo">238</span><a name="line.238">        arr[4] += 
arr[5];</a>
+<span class="sourceLineNo">239</span><a name="line.239">        arr[4] ^= 
arr[5] &lt;&lt; 10;</a>
+<span class="sourceLineNo">240</span><a name="line.240">        arr[7] += 
arr[4];</a>
+<span class="sourceLineNo">241</span><a name="line.241">        arr[5] += 
arr[6];</a>
+<span class="sourceLineNo">242</span><a name="line.242">        arr[5] ^= 
arr[6] &gt;&gt;&gt; 4;</a>
+<span class="sourceLineNo">243</span><a name="line.243">        arr[0] += 
arr[5];</a>
+<span class="sourceLineNo">244</span><a name="line.244">        arr[6] += 
arr[7];</a>
+<span class="sourceLineNo">245</span><a name="line.245">        arr[6] ^= 
arr[7] &lt;&lt; 8;</a>
+<span class="sourceLineNo">246</span><a name="line.246">        arr[1] += 
arr[6];</a>
+<span class="sourceLineNo">247</span><a name="line.247">        arr[7] += 
arr[0];</a>
+<span class="sourceLineNo">248</span><a name="line.248">        arr[7] ^= 
arr[0] &gt;&gt;&gt; 9;</a>
+<span class="sourceLineNo">249</span><a name="line.249">        arr[2] += 
arr[7];</a>
+<span class="sourceLineNo">250</span><a name="line.250">        arr[0] += 
arr[1];</a>
+<span class="sourceLineNo">251</span><a name="line.251">    }</a>
+<span class="sourceLineNo">252</span><a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253">    /** Set the state 
by copying the internal arrays.</a>
+<span class="sourceLineNo">254</span><a name="line.254">     *</a>
+<span class="sourceLineNo">255</span><a name="line.255">     * @param start 
First index into {@link #mem} array.</a>
+<span class="sourceLineNo">256</span><a name="line.256">     */</a>
+<span class="sourceLineNo">257</span><a name="line.257">    private void 
setState(int start) {</a>
+<span class="sourceLineNo">258</span><a name="line.258">        mem[start] = 
arr[0];</a>
+<span class="sourceLineNo">259</span><a name="line.259">        mem[start + 1] 
= arr[1];</a>
+<span class="sourceLineNo">260</span><a name="line.260">        mem[start + 2] 
= arr[2];</a>
+<span class="sourceLineNo">261</span><a name="line.261">        mem[start + 3] 
= arr[3];</a>
+<span class="sourceLineNo">262</span><a name="line.262">        mem[start + 4] 
= arr[4];</a>
+<span class="sourceLineNo">263</span><a name="line.263">        mem[start + 5] 
= arr[5];</a>
+<span class="sourceLineNo">264</span><a name="line.264">        mem[start + 6] 
= arr[6];</a>
+<span class="sourceLineNo">265</span><a name="line.265">        mem[start + 7] 
= arr[7];</a>
+<span class="sourceLineNo">266</span><a name="line.266">    }</a>
+<span class="sourceLineNo">267</span><a name="line.267">}</a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

Added: 
websites/production/commons/content/proper/commons-rng/commons-rng-core/javadocs/api-1.1/src-html/org/apache/commons/rng/core/source32/IntProvider.html
==============================================================================
--- 
websites/production/commons/content/proper/commons-rng/commons-rng-core/javadocs/api-1.1/src-html/org/apache/commons/rng/core/source32/IntProvider.html
 (added)
+++ 
websites/production/commons/content/proper/commons-rng/commons-rng-core/javadocs/api-1.1/src-html/org/apache/commons/rng/core/source32/IntProvider.html
 Tue Aug 14 12:48:23 2018
@@ -0,0 +1,198 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" 
href="../../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span><a name="line.1">/*</a>
+<span class="sourceLineNo">002</span><a name="line.2"> * Licensed to the 
Apache Software Foundation (ASF) under one or more</a>
+<span class="sourceLineNo">003</span><a name="line.3"> * contributor license 
agreements.  See the NOTICE file distributed with</a>
+<span class="sourceLineNo">004</span><a name="line.4"> * this work for 
additional information regarding copyright ownership.</a>
+<span class="sourceLineNo">005</span><a name="line.5"> * The ASF licenses this 
file to You under the Apache License, Version 2.0</a>
+<span class="sourceLineNo">006</span><a name="line.6"> * (the "License"); you 
may not use this file except in compliance with</a>
+<span class="sourceLineNo">007</span><a name="line.7"> * the License.  You may 
obtain a copy of the License at</a>
+<span class="sourceLineNo">008</span><a name="line.8"> *</a>
+<span class="sourceLineNo">009</span><a name="line.9"> *      
http://www.apache.org/licenses/LICENSE-2.0</a>
+<span class="sourceLineNo">010</span><a name="line.10"> *</a>
+<span class="sourceLineNo">011</span><a name="line.11"> * Unless required by 
applicable law or agreed to in writing, software</a>
+<span class="sourceLineNo">012</span><a name="line.12"> * distributed under 
the License is distributed on an "AS IS" BASIS,</a>
+<span class="sourceLineNo">013</span><a name="line.13"> * WITHOUT WARRANTIES 
OR CONDITIONS OF ANY KIND, either express or implied.</a>
+<span class="sourceLineNo">014</span><a name="line.14"> * See the License for 
the specific language governing permissions and</a>
+<span class="sourceLineNo">015</span><a name="line.15"> * limitations under 
the License.</a>
+<span class="sourceLineNo">016</span><a name="line.16"> */</a>
+<span class="sourceLineNo">017</span><a name="line.17"></a>
+<span class="sourceLineNo">018</span><a name="line.18">package 
org.apache.commons.rng.core.source32;</a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20">import 
org.apache.commons.rng.core.util.NumberFactory;</a>
+<span class="sourceLineNo">021</span><a name="line.21">import 
org.apache.commons.rng.core.BaseProvider;</a>
+<span class="sourceLineNo">022</span><a name="line.22"></a>
+<span class="sourceLineNo">023</span><a name="line.23">/**</a>
+<span class="sourceLineNo">024</span><a name="line.24"> * Base class for all 
implementations that provide an {@code int}-based</a>
+<span class="sourceLineNo">025</span><a name="line.25"> * source 
randomness.</a>
+<span class="sourceLineNo">026</span><a name="line.26"> */</a>
+<span class="sourceLineNo">027</span><a name="line.27">public abstract class 
IntProvider</a>
+<span class="sourceLineNo">028</span><a name="line.28">    extends 
BaseProvider</a>
+<span class="sourceLineNo">029</span><a name="line.29">    implements 
RandomIntSource {</a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span><a name="line.31">    /** {@inheritDoc} 
*/</a>
+<span class="sourceLineNo">032</span><a name="line.32">    @Override</a>
+<span class="sourceLineNo">033</span><a name="line.33">    public int 
nextInt() {</a>
+<span class="sourceLineNo">034</span><a name="line.34">        return 
next();</a>
+<span class="sourceLineNo">035</span><a name="line.35">    }</a>
+<span class="sourceLineNo">036</span><a name="line.36"></a>
+<span class="sourceLineNo">037</span><a name="line.37">    /** {@inheritDoc} 
*/</a>
+<span class="sourceLineNo">038</span><a name="line.38">    @Override</a>
+<span class="sourceLineNo">039</span><a name="line.39">    public boolean 
nextBoolean() {</a>
+<span class="sourceLineNo">040</span><a name="line.40">        return 
NumberFactory.makeBoolean(nextInt());</a>
+<span class="sourceLineNo">041</span><a name="line.41">    }</a>
+<span class="sourceLineNo">042</span><a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43">    /** {@inheritDoc} 
*/</a>
+<span class="sourceLineNo">044</span><a name="line.44">    @Override</a>
+<span class="sourceLineNo">045</span><a name="line.45">    public double 
nextDouble() {</a>
+<span class="sourceLineNo">046</span><a name="line.46">        return 
NumberFactory.makeDouble(nextInt(), nextInt());</a>
+<span class="sourceLineNo">047</span><a name="line.47">    }</a>
+<span class="sourceLineNo">048</span><a name="line.48"></a>
+<span class="sourceLineNo">049</span><a name="line.49">    /** {@inheritDoc} 
*/</a>
+<span class="sourceLineNo">050</span><a name="line.50">    @Override</a>
+<span class="sourceLineNo">051</span><a name="line.51">    public float 
nextFloat() {</a>
+<span class="sourceLineNo">052</span><a name="line.52">        return 
NumberFactory.makeFloat(nextInt());</a>
+<span class="sourceLineNo">053</span><a name="line.53">    }</a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span><a name="line.55">    /** {@inheritDoc} 
*/</a>
+<span class="sourceLineNo">056</span><a name="line.56">    @Override</a>
+<span class="sourceLineNo">057</span><a name="line.57">    public long 
nextLong() {</a>
+<span class="sourceLineNo">058</span><a name="line.58">        return 
NumberFactory.makeLong(nextInt(), nextInt());</a>
+<span class="sourceLineNo">059</span><a name="line.59">    }</a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span><a name="line.61">    /** {@inheritDoc} 
*/</a>
+<span class="sourceLineNo">062</span><a name="line.62">    @Override</a>
+<span class="sourceLineNo">063</span><a name="line.63">    public void 
nextBytes(byte[] bytes) {</a>
+<span class="sourceLineNo">064</span><a name="line.64">        
nextBytesFill(this, bytes, 0, bytes.length);</a>
+<span class="sourceLineNo">065</span><a name="line.65">    }</a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span><a name="line.67">    /** {@inheritDoc} 
*/</a>
+<span class="sourceLineNo">068</span><a name="line.68">    @Override</a>
+<span class="sourceLineNo">069</span><a name="line.69">    public void 
nextBytes(byte[] bytes,</a>
+<span class="sourceLineNo">070</span><a name="line.70">                        
  int start,</a>
+<span class="sourceLineNo">071</span><a name="line.71">                        
  int len) {</a>
+<span class="sourceLineNo">072</span><a name="line.72">        checkIndex(0, 
bytes.length - 1, start);</a>
+<span class="sourceLineNo">073</span><a name="line.73">        checkIndex(0, 
bytes.length - start, len);</a>
+<span class="sourceLineNo">074</span><a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75">        
nextBytesFill(this, bytes, start, len);</a>
+<span class="sourceLineNo">076</span><a name="line.76">    }</a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78">    /**</a>
+<span class="sourceLineNo">079</span><a name="line.79">     * Generates random 
bytes and places them into a user-supplied array.</a>
+<span class="sourceLineNo">080</span><a name="line.80">     *</a>
+<span class="sourceLineNo">081</span><a name="line.81">     * &lt;p&gt;</a>
+<span class="sourceLineNo">082</span><a name="line.82">     * The array is 
filled with bytes extracted from random {@code int} values.</a>
+<span class="sourceLineNo">083</span><a name="line.83">     * This implies 
that the number of random bytes generated may be larger than</a>
+<span class="sourceLineNo">084</span><a name="line.84">     * the length of 
the byte array.</a>
+<span class="sourceLineNo">085</span><a name="line.85">     * &lt;/p&gt;</a>
+<span class="sourceLineNo">086</span><a name="line.86">     *</a>
+<span class="sourceLineNo">087</span><a name="line.87">     * @param source 
Source of randomness.</a>
+<span class="sourceLineNo">088</span><a name="line.88">     * @param bytes 
Array in which to put the generated bytes. Cannot be null.</a>
+<span class="sourceLineNo">089</span><a name="line.89">     * @param start 
Index at which to start inserting the generated bytes.</a>
+<span class="sourceLineNo">090</span><a name="line.90">     * @param len 
Number of bytes to insert.</a>
+<span class="sourceLineNo">091</span><a name="line.91">     */</a>
+<span class="sourceLineNo">092</span><a name="line.92">    static void 
nextBytesFill(RandomIntSource source,</a>
+<span class="sourceLineNo">093</span><a name="line.93">                        
      byte[] bytes,</a>
+<span class="sourceLineNo">094</span><a name="line.94">                        
      int start,</a>
+<span class="sourceLineNo">095</span><a name="line.95">                        
      int len) {</a>
+<span class="sourceLineNo">096</span><a name="line.96">        int index = 
start; // Index of first insertion.</a>
+<span class="sourceLineNo">097</span><a name="line.97"></a>
+<span class="sourceLineNo">098</span><a name="line.98">        // Index of 
first insertion plus multiple of 4 part of length</a>
+<span class="sourceLineNo">099</span><a name="line.99">        // (i.e. length 
with 2 least significant bits unset).</a>
+<span class="sourceLineNo">100</span><a name="line.100">        final int 
indexLoopLimit = index + (len &amp; 0x7ffffffc);</a>
+<span class="sourceLineNo">101</span><a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102">        // Start 
filling in the byte array, 4 bytes at a time.</a>
+<span class="sourceLineNo">103</span><a name="line.103">        while (index 
&lt; indexLoopLimit) {</a>
+<span class="sourceLineNo">104</span><a name="line.104">            final int 
random = source.next();</a>
+<span class="sourceLineNo">105</span><a name="line.105">            
bytes[index++] = (byte) random;</a>
+<span class="sourceLineNo">106</span><a name="line.106">            
bytes[index++] = (byte) (random &gt;&gt;&gt; 8);</a>
+<span class="sourceLineNo">107</span><a name="line.107">            
bytes[index++] = (byte) (random &gt;&gt;&gt; 16);</a>
+<span class="sourceLineNo">108</span><a name="line.108">            
bytes[index++] = (byte) (random &gt;&gt;&gt; 24);</a>
+<span class="sourceLineNo">109</span><a name="line.109">        }</a>
+<span class="sourceLineNo">110</span><a name="line.110"></a>
+<span class="sourceLineNo">111</span><a name="line.111">        final int 
indexLimit = start + len; // Index of last insertion + 1.</a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span><a name="line.113">        // Fill in the 
remaining bytes.</a>
+<span class="sourceLineNo">114</span><a name="line.114">        if (index &lt; 
indexLimit) {</a>
+<span class="sourceLineNo">115</span><a name="line.115">            int random 
= source.next();</a>
+<span class="sourceLineNo">116</span><a name="line.116">            while 
(true) {</a>
+<span class="sourceLineNo">117</span><a name="line.117">                
bytes[index++] = (byte) random;</a>
+<span class="sourceLineNo">118</span><a name="line.118">                if 
(index &lt; indexLimit) {</a>
+<span class="sourceLineNo">119</span><a name="line.119">                    
random &gt;&gt;&gt;= 8;</a>
+<span class="sourceLineNo">120</span><a name="line.120">                } else 
{</a>
+<span class="sourceLineNo">121</span><a name="line.121">                    
break;</a>
+<span class="sourceLineNo">122</span><a name="line.122">                }</a>
+<span class="sourceLineNo">123</span><a name="line.123">            }</a>
+<span class="sourceLineNo">124</span><a name="line.124">        }</a>
+<span class="sourceLineNo">125</span><a name="line.125">    }</a>
+<span class="sourceLineNo">126</span><a name="line.126">}</a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

Added: 
websites/production/commons/content/proper/commons-rng/commons-rng-core/javadocs/api-1.1/src-html/org/apache/commons/rng/core/source32/JDKRandom.html
==============================================================================
--- 
websites/production/commons/content/proper/commons-rng/commons-rng-core/javadocs/api-1.1/src-html/org/apache/commons/rng/core/source32/JDKRandom.html
 (added)
+++ 
websites/production/commons/content/proper/commons-rng/commons-rng-core/javadocs/api-1.1/src-html/org/apache/commons/rng/core/source32/JDKRandom.html
 Tue Aug 14 12:48:23 2018
@@ -0,0 +1,170 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" 
href="../../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span><a name="line.1">/*</a>
+<span class="sourceLineNo">002</span><a name="line.2"> * Licensed to the 
Apache Software Foundation (ASF) under one or more</a>
+<span class="sourceLineNo">003</span><a name="line.3"> * contributor license 
agreements.  See the NOTICE file distributed with</a>
+<span class="sourceLineNo">004</span><a name="line.4"> * this work for 
additional information regarding copyright ownership.</a>
+<span class="sourceLineNo">005</span><a name="line.5"> * The ASF licenses this 
file to You under the Apache License, Version 2.0</a>
+<span class="sourceLineNo">006</span><a name="line.6"> * (the "License"); you 
may not use this file except in compliance with</a>
+<span class="sourceLineNo">007</span><a name="line.7"> * the License.  You may 
obtain a copy of the License at</a>
+<span class="sourceLineNo">008</span><a name="line.8"> *</a>
+<span class="sourceLineNo">009</span><a name="line.9"> *      
http://www.apache.org/licenses/LICENSE-2.0</a>
+<span class="sourceLineNo">010</span><a name="line.10"> *</a>
+<span class="sourceLineNo">011</span><a name="line.11"> * Unless required by 
applicable law or agreed to in writing, software</a>
+<span class="sourceLineNo">012</span><a name="line.12"> * distributed under 
the License is distributed on an "AS IS" BASIS,</a>
+<span class="sourceLineNo">013</span><a name="line.13"> * WITHOUT WARRANTIES 
OR CONDITIONS OF ANY KIND, either express or implied.</a>
+<span class="sourceLineNo">014</span><a name="line.14"> * See the License for 
the specific language governing permissions and</a>
+<span class="sourceLineNo">015</span><a name="line.15"> * limitations under 
the License.</a>
+<span class="sourceLineNo">016</span><a name="line.16"> */</a>
+<span class="sourceLineNo">017</span><a name="line.17">package 
org.apache.commons.rng.core.source32;</a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19">import 
java.util.Random;</a>
+<span class="sourceLineNo">020</span><a name="line.20">import 
java.io.IOException;</a>
+<span class="sourceLineNo">021</span><a name="line.21">import 
java.io.ObjectOutputStream;</a>
+<span class="sourceLineNo">022</span><a name="line.22">import 
java.io.ObjectInputStream;</a>
+<span class="sourceLineNo">023</span><a name="line.23">import 
java.io.ByteArrayOutputStream;</a>
+<span class="sourceLineNo">024</span><a name="line.24">import 
java.io.ByteArrayInputStream;</a>
+<span class="sourceLineNo">025</span><a name="line.25"></a>
+<span class="sourceLineNo">026</span><a name="line.26">/**</a>
+<span class="sourceLineNo">027</span><a name="line.27"> * A provider that uses 
the {@link Random#nextInt()} method of the JDK's</a>
+<span class="sourceLineNo">028</span><a name="line.28"> * {@link Random} class 
as the source of randomness.</a>
+<span class="sourceLineNo">029</span><a name="line.29"> *</a>
+<span class="sourceLineNo">030</span><a name="line.30"> * &lt;p&gt;</a>
+<span class="sourceLineNo">031</span><a name="line.31"> * 
&lt;b&gt;Caveat:&lt;/b&gt; All the other calls will be redirected to the 
methods</a>
+<span class="sourceLineNo">032</span><a name="line.32"> * implemented within 
this library.</a>
+<span class="sourceLineNo">033</span><a name="line.33"> * &lt;/p&gt;</a>
+<span class="sourceLineNo">034</span><a name="line.34"> *</a>
+<span class="sourceLineNo">035</span><a name="line.35"> * &lt;p&gt;</a>
+<span class="sourceLineNo">036</span><a name="line.36"> * The state of this 
source of randomness is saved and restored through</a>
+<span class="sourceLineNo">037</span><a name="line.37"> * the serialization of 
the {@link Random} instance.</a>
+<span class="sourceLineNo">038</span><a name="line.38"> * &lt;/p&gt;</a>
+<span class="sourceLineNo">039</span><a name="line.39"> *</a>
+<span class="sourceLineNo">040</span><a name="line.40"> * @since 1.0</a>
+<span class="sourceLineNo">041</span><a name="line.41"> */</a>
+<span class="sourceLineNo">042</span><a name="line.42">public class JDKRandom 
extends IntProvider {</a>
+<span class="sourceLineNo">043</span><a name="line.43">    /** Delegate.  
Cannot be "final" (to allow serialization). */</a>
+<span class="sourceLineNo">044</span><a name="line.44">    private Random 
delegate;</a>
+<span class="sourceLineNo">045</span><a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46">    /**</a>
+<span class="sourceLineNo">047</span><a name="line.47">     * Creates an 
instance with the given seed.</a>
+<span class="sourceLineNo">048</span><a name="line.48">     *</a>
+<span class="sourceLineNo">049</span><a name="line.49">     * @param seed 
Initial seed.</a>
+<span class="sourceLineNo">050</span><a name="line.50">     */</a>
+<span class="sourceLineNo">051</span><a name="line.51">    public 
JDKRandom(Long seed) {</a>
+<span class="sourceLineNo">052</span><a name="line.52">        delegate = new 
Random(seed);</a>
+<span class="sourceLineNo">053</span><a name="line.53">    }</a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span><a name="line.55">    /**</a>
+<span class="sourceLineNo">056</span><a name="line.56">     * {@inheritDoc}</a>
+<span class="sourceLineNo">057</span><a name="line.57">     *</a>
+<span class="sourceLineNo">058</span><a name="line.58">     * @see 
Random#nextInt()</a>
+<span class="sourceLineNo">059</span><a name="line.59">     */</a>
+<span class="sourceLineNo">060</span><a name="line.60">    @Override</a>
+<span class="sourceLineNo">061</span><a name="line.61">    public int next() 
{</a>
+<span class="sourceLineNo">062</span><a name="line.62">        return 
delegate.nextInt();</a>
+<span class="sourceLineNo">063</span><a name="line.63">    }</a>
+<span class="sourceLineNo">064</span><a name="line.64"></a>
+<span class="sourceLineNo">065</span><a name="line.65">    /** {@inheritDoc} 
*/</a>
+<span class="sourceLineNo">066</span><a name="line.66">    @Override</a>
+<span class="sourceLineNo">067</span><a name="line.67">    protected byte[] 
getStateInternal() {</a>
+<span class="sourceLineNo">068</span><a name="line.68">        try {</a>
+<span class="sourceLineNo">069</span><a name="line.69">            final 
ByteArrayOutputStream bos = new ByteArrayOutputStream();</a>
+<span class="sourceLineNo">070</span><a name="line.70">            final 
ObjectOutputStream oos = new ObjectOutputStream(bos);</a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span><a name="line.72">            // 
Serialize the "delegate".</a>
+<span class="sourceLineNo">073</span><a name="line.73">            
oos.writeObject(delegate);</a>
+<span class="sourceLineNo">074</span><a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75">            return 
bos.toByteArray();</a>
+<span class="sourceLineNo">076</span><a name="line.76">        } catch 
(IOException e) {</a>
+<span class="sourceLineNo">077</span><a name="line.77">            // 
Workaround checked exception.</a>
+<span class="sourceLineNo">078</span><a name="line.78">            throw new 
IllegalStateException(e);</a>
+<span class="sourceLineNo">079</span><a name="line.79">        }</a>
+<span class="sourceLineNo">080</span><a name="line.80">    }</a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82">    /** {@inheritDoc} 
*/</a>
+<span class="sourceLineNo">083</span><a name="line.83">    @Override</a>
+<span class="sourceLineNo">084</span><a name="line.84">    protected void 
setStateInternal(byte[] s) {</a>
+<span class="sourceLineNo">085</span><a name="line.85">        try {</a>
+<span class="sourceLineNo">086</span><a name="line.86">            final 
ByteArrayInputStream bis = new ByteArrayInputStream(s);</a>
+<span class="sourceLineNo">087</span><a name="line.87">            final 
ObjectInputStream ois = new ObjectInputStream(bis);</a>
+<span class="sourceLineNo">088</span><a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89">            delegate = 
(Random) ois.readObject();</a>
+<span class="sourceLineNo">090</span><a name="line.90">        } catch 
(ClassNotFoundException e) {</a>
+<span class="sourceLineNo">091</span><a name="line.91">            // 
Workaround checked exception.</a>
+<span class="sourceLineNo">092</span><a name="line.92">            throw new 
IllegalStateException(e);</a>
+<span class="sourceLineNo">093</span><a name="line.93">        } catch 
(IOException e) {</a>
+<span class="sourceLineNo">094</span><a name="line.94">            // 
Workaround checked exception.</a>
+<span class="sourceLineNo">095</span><a name="line.95">            throw new 
IllegalStateException(e);</a>
+<span class="sourceLineNo">096</span><a name="line.96">        }</a>
+<span class="sourceLineNo">097</span><a name="line.97">    }</a>
+<span class="sourceLineNo">098</span><a name="line.98">}</a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>


Reply via email to