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&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"> * <p></a>
+<span class="sourceLineNo">027</span><a name="line.27"> * This generator is described in a paper by Fran&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"> * <a href="http://www.iro.umontreal.ca/~lecuyer/myftp/papers/wellrng.pdf"></a>
+<span class="sourceLineNo">030</span><a name="line.30"> * Improved Long-Period Generators Based on Linear Recurrences Modulo 2</a></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"> * <a href="http://www.iro.umontreal.ca/~lecuyer/myftp/papers/wellrng-errata.txt">wellrng-errata.txt</a>.</a>
+<span class="sourceLineNo">034</span><a name="line.34"> * </p></a>
+<span class="sourceLineNo">035</span><a name="line.35"> *</a>
+<span class="sourceLineNo">036</span><a name="line.36"> * @see <a href="http://www.iro.umontreal.ca/~panneton/WELLRNG.html">WELL Random number generator</a></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 < v.length) {</a>
+<span class="sourceLineNo">092</span><a name="line.92"> for (int i = seed.length; i < 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 >> 30)) + i) & 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 < 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&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"> * <p></a>
+<span class="sourceLineNo">027</span><a name="line.27"> * This generator is described in a paper by Fran&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"> * <a href="http://www.iro.umontreal.ca/~lecuyer/myftp/papers/wellrng.pdf"></a>
+<span class="sourceLineNo">030</span><a name="line.30"> * Improved Long-Period Generators Based on Linear Recurrences Modulo 2</a></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"> * <a href="http://www.iro.umontreal.ca/~lecuyer/myftp/papers/wellrng-errata.txt">wellrng-errata.txt</a>.</a>
+<span class="sourceLineNo">034</span><a name="line.34"> * </p></a>
+<span class="sourceLineNo">035</span><a name="line.35"> *</a>
+<span class="sourceLineNo">036</span><a name="line.36"> * @see <a href="http://www.iro.umontreal.ca/~panneton/WELLRNG.html">WELL Random number generator</a></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 < v.length) {</a>
+<span class="sourceLineNo">092</span><a name="line.92"> for (int i = seed.length; i < 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 >> 30)) + i) & 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 < 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"> * <p></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<sup>40</sup> values long, and they</a>
+<span class="sourceLineNo">031</span><a name="line.31"> * are 2<sup>8295</sup> 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"> * <p></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 <a href="http://burtleburtle.net/bob/rand/isaacafa.html"></a>
+<span class="sourceLineNo">039</span><a name="line.39"> * ISAAC: a fast cryptographic pseudo-random number generator</a></a>
+<span class="sourceLineNo">040</span><a name="line.40"> *</a>
+<span class="sourceLineNo">041</span><a name="line.41"> * @see <a href="https://en.wikipedia.org/wiki/ISAAC_(cipher)">ISAAC (Wikipedia)</a></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 << 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 >> 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 << 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 < rslLen) {</a>
+<span class="sourceLineNo">125</span><a name="line.125"> for (int j = seedLen; j < 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 >> 30) + j & 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 < 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 < 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 < 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 << 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 >>> 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 << 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 >>> 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 & MASK) >> 2] + isaacA + isaacB;</a>
+<span class="sourceLineNo">180</span><a name="line.180"> isaacB = mem[(mem[isaacI] >> SIZE_L & MASK) >> 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 < 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 < 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 < 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 < 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] << 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] >>> 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] << 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] >>> 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] << 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] >>> 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] << 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] >>> 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"> * <p></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"> * </p></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 & 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 < 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 >>> 8);</a>
+<span class="sourceLineNo">107</span><a name="line.107"> bytes[index++] = (byte) (random >>> 16);</a>
+<span class="sourceLineNo">108</span><a name="line.108"> bytes[index++] = (byte) (random >>> 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 < 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 < indexLimit) {</a>
+<span class="sourceLineNo">119</span><a name="line.119"> random >>>= 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"> * <p></a>
+<span class="sourceLineNo">031</span><a name="line.31"> * <b>Caveat:</b> 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"> * </p></a>
+<span class="sourceLineNo">034</span><a name="line.34"> *</a>
+<span class="sourceLineNo">035</span><a name="line.35"> * <p></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"> * </p></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>