| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
| <!-- NewPage --> |
| <html lang="en"> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html" charset="UTF-8"> |
| <title>HaltonSequenceGenerator (Apache Commons Math 3.3 API)</title> |
| <link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style"> |
| </head> |
| <body> |
| <script type="text/javascript"><!-- |
| if (location.href.indexOf('is-external=true') == -1) { |
| parent.document.title="HaltonSequenceGenerator (Apache Commons Math 3.3 API)"; |
| } |
| //--> |
| </script> |
| <noscript> |
| <div>JavaScript is disabled on your browser.</div> |
| </noscript> |
| <!-- ========= START OF TOP NAVBAR ======= --> |
| <div class="topNav"><a name="navbar_top"> |
| <!-- --> |
| </a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow"> |
| <!-- --> |
| </a> |
| <ul class="navList" title="Navigation"> |
| <li><a href="../../../../../overview-summary.html">Overview</a></li> |
| <li><a href="package-summary.html">Package</a></li> |
| <li class="navBarCell1Rev">Class</li> |
| <li><a href="class-use/HaltonSequenceGenerator.html">Use</a></li> |
| <li><a href="package-tree.html">Tree</a></li> |
| <li><a href="../../../../../deprecated-list.html">Deprecated</a></li> |
| <li><a href="../../../../../index-all.html">Index</a></li> |
| <li><a href="../../../../../help-doc.html">Help</a></li> |
| </ul> |
| <div class="aboutLanguage"><em><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script></em></div> |
| </div> |
| <div class="subNav"> |
| <ul class="navList"> |
| <li><a href="../../../../../org/apache/commons/math3/random/GaussianRandomGenerator.html" title="class in org.apache.commons.math3.random"><span class="strong">Prev Class</span></a></li> |
| <li><a href="../../../../../org/apache/commons/math3/random/ISAACRandom.html" title="class in org.apache.commons.math3.random"><span class="strong">Next Class</span></a></li> |
| </ul> |
| <ul class="navList"> |
| <li><a href="../../../../../index.html?org/apache/commons/math3/random/HaltonSequenceGenerator.html" target="_top">Frames</a></li> |
| <li><a href="HaltonSequenceGenerator.html" target="_top">No Frames</a></li> |
| </ul> |
| <ul class="navList" id="allclasses_navbar_top"> |
| <li><a href="../../../../../allclasses-noframe.html">All Classes</a></li> |
| </ul> |
| <div> |
| <script type="text/javascript"><!-- |
| allClassesLink = document.getElementById("allclasses_navbar_top"); |
| if(window==top) { |
| allClassesLink.style.display = "block"; |
| } |
| else { |
| allClassesLink.style.display = "none"; |
| } |
| //--> |
| </script> |
| </div> |
| <div> |
| <ul class="subNavList"> |
| <li>Summary: </li> |
| <li>Nested | </li> |
| <li>Field | </li> |
| <li><a href="#constructor_summary">Constr</a> | </li> |
| <li><a href="#method_summary">Method</a></li> |
| </ul> |
| <ul class="subNavList"> |
| <li>Detail: </li> |
| <li>Field | </li> |
| <li><a href="#constructor_detail">Constr</a> | </li> |
| <li><a href="#method_detail">Method</a></li> |
| </ul> |
| </div> |
| <a name="skip-navbar_top"> |
| <!-- --> |
| </a></div> |
| <!-- ========= END OF TOP NAVBAR ========= --> |
| <!-- ======== START OF CLASS DATA ======== --> |
| <div class="header"> |
| <div class="subTitle">org.apache.commons.math3.random</div> |
| <h2 title="Class HaltonSequenceGenerator" class="title">Class HaltonSequenceGenerator</h2> |
| </div> |
| <div class="contentContainer"> |
| <ul class="inheritance"> |
| <li><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li> |
| <li> |
| <ul class="inheritance"> |
| <li>org.apache.commons.math3.random.HaltonSequenceGenerator</li> |
| </ul> |
| </li> |
| </ul> |
| <div class="description"> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <dl> |
| <dt>All Implemented Interfaces:</dt> |
| <dd><a href="../../../../../org/apache/commons/math3/random/RandomVectorGenerator.html" title="interface in org.apache.commons.math3.random">RandomVectorGenerator</a></dd> |
| </dl> |
| <hr> |
| <br> |
| <pre>public class <span class="strong">HaltonSequenceGenerator</span> |
| extends <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a> |
| implements <a href="../../../../../org/apache/commons/math3/random/RandomVectorGenerator.html" title="interface in org.apache.commons.math3.random">RandomVectorGenerator</a></pre> |
| <div class="block">Implementation of a Halton sequence. |
| <p> |
| A Halton sequence is a low-discrepancy sequence generating points in the interval [0, 1] according to |
| <pre> |
| H(n) = d_0 / b + d_1 / b^2 .... d_j / b^j+1 |
| |
| with |
| |
| n = d_j * b^j-1 + ... d_1 * b + d_0 * b^0 |
| </pre> |
| For higher dimensions, subsequent prime numbers are used as base, e.g. { 2, 3, 5 } for a Halton sequence in R^3. |
| <p> |
| Halton sequences are known to suffer from linear correlation for larger prime numbers, thus the individual digits |
| are usually scrambled. This implementation already comes with support for up to 40 dimensions with optimal weight |
| numbers from <a href="http://etd.lib.fsu.edu/theses/available/etd-07062004-140409/unrestricted/dissertation1.pdf"> |
| H. Chi: Scrambled quasirandom sequences and their applications</a>. |
| <p> |
| The generator supports two modes: |
| <ul> |
| <li>sequential generation of points: <a href="../../../../../org/apache/commons/math3/random/HaltonSequenceGenerator.html#nextVector()"><code>nextVector()</code></a></li> |
| <li>random access to the i-th point in the sequence: <a href="../../../../../org/apache/commons/math3/random/HaltonSequenceGenerator.html#skipTo(int)"><code>skipTo(int)</code></a></li> |
| </ul></div> |
| <dl><dt><span class="strong">Since:</span></dt> |
| <dd>3.3</dd> |
| <dt><span class="strong">Version:</span></dt> |
| <dd>$Id: HaltonSequenceGenerator.java 1512043 2013-08-08 21:27:57Z tn $</dd> |
| <dt><span class="strong">See Also:</span></dt><dd><a href="http://en.wikipedia.org/wiki/Halton_sequence">Halton sequence (Wikipedia)</a>, |
| <a href="https://lirias.kuleuven.be/bitstream/123456789/131168/1/mcm2005_bartv.pdf"> |
| On the Halton sequence and its scramblings</a></dd></dl> |
| </li> |
| </ul> |
| </div> |
| <div class="summary"> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <!-- ======== CONSTRUCTOR SUMMARY ======== --> |
| <ul class="blockList"> |
| <li class="blockList"><a name="constructor_summary"> |
| <!-- --> |
| </a> |
| <h3>Constructor Summary</h3> |
| <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation"> |
| <caption><span>Constructors</span><span class="tabEnd"> </span></caption> |
| <tr> |
| <th class="colOne" scope="col">Constructor and Description</th> |
| </tr> |
| <tr class="altColor"> |
| <td class="colOne"><code><strong><a href="../../../../../org/apache/commons/math3/random/HaltonSequenceGenerator.html#HaltonSequenceGenerator(int)">HaltonSequenceGenerator</a></strong>(int dimension)</code> |
| <div class="block">Construct a new Halton sequence generator for the given space dimension.</div> |
| </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colOne"><code><strong><a href="../../../../../org/apache/commons/math3/random/HaltonSequenceGenerator.html#HaltonSequenceGenerator(int, int[], int[])">HaltonSequenceGenerator</a></strong>(int dimension, |
| int[] bases, |
| int[] weights)</code> |
| <div class="block">Construct a new Halton sequence generator with the given base numbers and weights for each dimension.</div> |
| </td> |
| </tr> |
| </table> |
| </li> |
| </ul> |
| <!-- ========== METHOD SUMMARY =========== --> |
| <ul class="blockList"> |
| <li class="blockList"><a name="method_summary"> |
| <!-- --> |
| </a> |
| <h3>Method Summary</h3> |
| <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation"> |
| <caption><span>Methods</span><span class="tabEnd"> </span></caption> |
| <tr> |
| <th class="colFirst" scope="col">Modifier and Type</th> |
| <th class="colLast" scope="col">Method and Description</th> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>int</code></td> |
| <td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/HaltonSequenceGenerator.html#getNextIndex()">getNextIndex</a></strong>()</code> |
| <div class="block">Returns the index i of the next point in the Halton sequence that will be returned |
| by calling <a href="../../../../../org/apache/commons/math3/random/HaltonSequenceGenerator.html#nextVector()"><code>nextVector()</code></a>.</div> |
| </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><code>double[]</code></td> |
| <td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/HaltonSequenceGenerator.html#nextVector()">nextVector</a></strong>()</code> |
| <div class="block">Generate a random vector.</div> |
| </td> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>protected int</code></td> |
| <td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/HaltonSequenceGenerator.html#scramble(int, int, int, int)">scramble</a></strong>(int i, |
| int j, |
| int b, |
| int digit)</code> |
| <div class="block">Performs scrambling of digit <code>d_j</code> according to the formula:</div> |
| </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><code>double[]</code></td> |
| <td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/HaltonSequenceGenerator.html#skipTo(int)">skipTo</a></strong>(int index)</code> |
| <div class="block">Skip to the i-th point in the Halton sequence.</div> |
| </td> |
| </tr> |
| </table> |
| <ul class="blockList"> |
| <li class="blockList"><a name="methods_inherited_from_class_java.lang.Object"> |
| <!-- --> |
| </a> |
| <h3>Methods inherited from class java.lang.<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3> |
| <code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</a></code></li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </div> |
| <div class="details"> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <!-- ========= CONSTRUCTOR DETAIL ======== --> |
| <ul class="blockList"> |
| <li class="blockList"><a name="constructor_detail"> |
| <!-- --> |
| </a> |
| <h3>Constructor Detail</h3> |
| <a name="HaltonSequenceGenerator(int)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>HaltonSequenceGenerator</h4> |
| <pre>public HaltonSequenceGenerator(int dimension) |
| throws <a href="../../../../../org/apache/commons/math3/exception/OutOfRangeException.html" title="class in org.apache.commons.math3.exception">OutOfRangeException</a></pre> |
| <div class="block">Construct a new Halton sequence generator for the given space dimension.</div> |
| <dl><dt><span class="strong">Parameters:</span></dt><dd><code>dimension</code> - the space dimension</dd> |
| <dt><span class="strong">Throws:</span></dt> |
| <dd><code><a href="../../../../../org/apache/commons/math3/exception/OutOfRangeException.html" title="class in org.apache.commons.math3.exception">OutOfRangeException</a></code> - if the space dimension is outside the allowed range of [1, 40]</dd></dl> |
| </li> |
| </ul> |
| <a name="HaltonSequenceGenerator(int, int[], int[])"> |
| <!-- --> |
| </a> |
| <ul class="blockListLast"> |
| <li class="blockList"> |
| <h4>HaltonSequenceGenerator</h4> |
| <pre>public HaltonSequenceGenerator(int dimension, |
| int[] bases, |
| int[] weights) |
| throws <a href="../../../../../org/apache/commons/math3/exception/NullArgumentException.html" title="class in org.apache.commons.math3.exception">NullArgumentException</a>, |
| <a href="../../../../../org/apache/commons/math3/exception/OutOfRangeException.html" title="class in org.apache.commons.math3.exception">OutOfRangeException</a>, |
| <a href="../../../../../org/apache/commons/math3/exception/DimensionMismatchException.html" title="class in org.apache.commons.math3.exception">DimensionMismatchException</a></pre> |
| <div class="block">Construct a new Halton sequence generator with the given base numbers and weights for each dimension. |
| The length of the bases array defines the space dimension and is required to be > 0.</div> |
| <dl><dt><span class="strong">Parameters:</span></dt><dd><code>dimension</code> - the space dimension</dd><dd><code>bases</code> - the base number for each dimension, entries should be (pairwise) prime, may not be null</dd><dd><code>weights</code> - the weights used during scrambling, may be null in which case no scrambling will be performed</dd> |
| <dt><span class="strong">Throws:</span></dt> |
| <dd><code><a href="../../../../../org/apache/commons/math3/exception/NullArgumentException.html" title="class in org.apache.commons.math3.exception">NullArgumentException</a></code> - if base is null</dd> |
| <dd><code><a href="../../../../../org/apache/commons/math3/exception/OutOfRangeException.html" title="class in org.apache.commons.math3.exception">OutOfRangeException</a></code> - if the space dimension is outside the range [1, len], where |
| len refers to the length of the bases array</dd> |
| <dd><code><a href="../../../../../org/apache/commons/math3/exception/DimensionMismatchException.html" title="class in org.apache.commons.math3.exception">DimensionMismatchException</a></code> - if weights is non-null and the length of the input arrays differ</dd></dl> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| <!-- ============ METHOD DETAIL ========== --> |
| <ul class="blockList"> |
| <li class="blockList"><a name="method_detail"> |
| <!-- --> |
| </a> |
| <h3>Method Detail</h3> |
| <a name="nextVector()"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>nextVector</h4> |
| <pre>public double[] nextVector()</pre> |
| <div class="block">Generate a random vector.</div> |
| <dl> |
| <dt><strong>Specified by:</strong></dt> |
| <dd><code><a href="../../../../../org/apache/commons/math3/random/RandomVectorGenerator.html#nextVector()">nextVector</a></code> in interface <code><a href="../../../../../org/apache/commons/math3/random/RandomVectorGenerator.html" title="interface in org.apache.commons.math3.random">RandomVectorGenerator</a></code></dd> |
| <dt><span class="strong">Returns:</span></dt><dd>a random vector as an array of double.</dd></dl> |
| </li> |
| </ul> |
| <a name="scramble(int, int, int, int)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>scramble</h4> |
| <pre>protected int scramble(int i, |
| int j, |
| int b, |
| int digit)</pre> |
| <div class="block">Performs scrambling of digit <code>d_j</code> according to the formula: |
| <pre> |
| ( weight_i * d_j ) mod base |
| </pre> |
| Implementations can override this method to do a different scrambling.</div> |
| <dl><dt><span class="strong">Parameters:</span></dt><dd><code>i</code> - the dimension index</dd><dd><code>j</code> - the digit index</dd><dd><code>b</code> - the base for this dimension</dd><dd><code>digit</code> - the j-th digit</dd> |
| <dt><span class="strong">Returns:</span></dt><dd>the scrambled digit</dd></dl> |
| </li> |
| </ul> |
| <a name="skipTo(int)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>skipTo</h4> |
| <pre>public double[] skipTo(int index) |
| throws <a href="../../../../../org/apache/commons/math3/exception/NotPositiveException.html" title="class in org.apache.commons.math3.exception">NotPositiveException</a></pre> |
| <div class="block">Skip to the i-th point in the Halton sequence. |
| <p> |
| This operation can be performed in O(1).</div> |
| <dl><dt><span class="strong">Parameters:</span></dt><dd><code>index</code> - the index in the sequence to skip to</dd> |
| <dt><span class="strong">Returns:</span></dt><dd>the i-th point in the Halton sequence</dd> |
| <dt><span class="strong">Throws:</span></dt> |
| <dd><code><a href="../../../../../org/apache/commons/math3/exception/NotPositiveException.html" title="class in org.apache.commons.math3.exception">NotPositiveException</a></code> - if index < 0</dd></dl> |
| </li> |
| </ul> |
| <a name="getNextIndex()"> |
| <!-- --> |
| </a> |
| <ul class="blockListLast"> |
| <li class="blockList"> |
| <h4>getNextIndex</h4> |
| <pre>public int getNextIndex()</pre> |
| <div class="block">Returns the index i of the next point in the Halton sequence that will be returned |
| by calling <a href="../../../../../org/apache/commons/math3/random/HaltonSequenceGenerator.html#nextVector()"><code>nextVector()</code></a>.</div> |
| <dl><dt><span class="strong">Returns:</span></dt><dd>the index of the next point</dd></dl> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <!-- ========= END OF CLASS DATA ========= --> |
| <!-- ======= START OF BOTTOM NAVBAR ====== --> |
| <div class="bottomNav"><a name="navbar_bottom"> |
| <!-- --> |
| </a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow"> |
| <!-- --> |
| </a> |
| <ul class="navList" title="Navigation"> |
| <li><a href="../../../../../overview-summary.html">Overview</a></li> |
| <li><a href="package-summary.html">Package</a></li> |
| <li class="navBarCell1Rev">Class</li> |
| <li><a href="class-use/HaltonSequenceGenerator.html">Use</a></li> |
| <li><a href="package-tree.html">Tree</a></li> |
| <li><a href="../../../../../deprecated-list.html">Deprecated</a></li> |
| <li><a href="../../../../../index-all.html">Index</a></li> |
| <li><a href="../../../../../help-doc.html">Help</a></li> |
| </ul> |
| <div class="aboutLanguage"><em><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script></em></div> |
| </div> |
| <div class="subNav"> |
| <ul class="navList"> |
| <li><a href="../../../../../org/apache/commons/math3/random/GaussianRandomGenerator.html" title="class in org.apache.commons.math3.random"><span class="strong">Prev Class</span></a></li> |
| <li><a href="../../../../../org/apache/commons/math3/random/ISAACRandom.html" title="class in org.apache.commons.math3.random"><span class="strong">Next Class</span></a></li> |
| </ul> |
| <ul class="navList"> |
| <li><a href="../../../../../index.html?org/apache/commons/math3/random/HaltonSequenceGenerator.html" target="_top">Frames</a></li> |
| <li><a href="HaltonSequenceGenerator.html" target="_top">No Frames</a></li> |
| </ul> |
| <ul class="navList" id="allclasses_navbar_bottom"> |
| <li><a href="../../../../../allclasses-noframe.html">All Classes</a></li> |
| </ul> |
| <div> |
| <script type="text/javascript"><!-- |
| allClassesLink = document.getElementById("allclasses_navbar_bottom"); |
| if(window==top) { |
| allClassesLink.style.display = "block"; |
| } |
| else { |
| allClassesLink.style.display = "none"; |
| } |
| //--> |
| </script> |
| </div> |
| <div> |
| <ul class="subNavList"> |
| <li>Summary: </li> |
| <li>Nested | </li> |
| <li>Field | </li> |
| <li><a href="#constructor_summary">Constr</a> | </li> |
| <li><a href="#method_summary">Method</a></li> |
| </ul> |
| <ul class="subNavList"> |
| <li>Detail: </li> |
| <li>Field | </li> |
| <li><a href="#constructor_detail">Constr</a> | </li> |
| <li><a href="#method_detail">Method</a></li> |
| </ul> |
| </div> |
| <a name="skip-navbar_bottom"> |
| <!-- --> |
| </a></div> |
| <!-- ======== END OF BOTTOM NAVBAR ======= --> |
| <p class="legalCopy"><small>Copyright © 2003–2014 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p> |
| </body> |
| </html> |