You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@commons.apache.org by ch...@apache.org on 2018/08/14 12:48:24 UTC

svn commit: r1033941 [22/26] - in /websites/production/commons/content/proper/commons-rng/commons-rng-core/javadocs/api-1.1: ./ jquery/ jquery/external/ jquery/external/jquery/ jquery/images/ jquery/jszip-utils/ jquery/jszip-utils/dist/ jquery/jszip/ j...

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>