<!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>RandomDataImpl (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="RandomDataImpl (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/RandomDataImpl.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/RandomDataGenerator.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/RandomGenerator.html" title="interface 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/RandomDataImpl.html" target="_top">Frames</a></li>
<li><a href="RandomDataImpl.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:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</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 RandomDataImpl" class="title">Class RandomDataImpl</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.RandomDataImpl</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="http://docs.oracle.com/javase/6/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>, <a href="../../../../../org/apache/commons/math3/random/RandomData.html" title="interface in org.apache.commons.math3.random">RandomData</a></dd>
</dl>
<hr>
<div class="block"><strong>Deprecated.</strong>&nbsp;
<div class="block"><i>to be removed in 4.0.  Use <a href="../../../../../org/apache/commons/math3/random/RandomDataGenerator.html" title="class in org.apache.commons.math3.random"><code>RandomDataGenerator</code></a> instead</i></div>
</div>
<br>
<pre><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
public class <span class="strong">RandomDataImpl</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/RandomData.html" title="interface in org.apache.commons.math3.random">RandomData</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a></pre>
<div class="block">Generates random deviates and other random data using a <a href="../../../../../org/apache/commons/math3/random/RandomGenerator.html" title="interface in org.apache.commons.math3.random"><code>RandomGenerator</code></a>
 instance to generate non-secure data and a <a href="http://docs.oracle.com/javase/6/docs/api/java/security/SecureRandom.html?is-external=true" title="class or interface in java.security"><code>SecureRandom</code></a>
 instance to provide data for the <code>nextSecureXxx</code> methods. If no
 <code>RandomGenerator</code> is provided in the constructor, the default is
 to use a <a href="../../../../../org/apache/commons/math3/random/Well19937c.html" title="class in org.apache.commons.math3.random"><code>Well19937c</code></a> generator. To plug in a different
 implementation, either implement <code>RandomGenerator</code> directly or
 extend <a href="../../../../../org/apache/commons/math3/random/AbstractRandomGenerator.html" title="class in org.apache.commons.math3.random"><code>AbstractRandomGenerator</code></a>.
 <p>
 Supports reseeding the underlying pseudo-random number generator (PRNG). The
 <code>SecurityProvider</code> and <code>Algorithm</code> used by the
 <code>SecureRandom</code> instance can also be reset.
 </p>
 <p>
 For details on the default PRNGs, see <a href="http://docs.oracle.com/javase/6/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util"><code>Random</code></a> and
 <a href="http://docs.oracle.com/javase/6/docs/api/java/security/SecureRandom.html?is-external=true" title="class or interface in java.security"><code>SecureRandom</code></a>.
 </p>
 <p>
 <strong>Usage Notes</strong>:
 <ul>
 <li>
 Instance variables are used to maintain <code>RandomGenerator</code> and
 <code>SecureRandom</code> instances used in data generation. Therefore, to
 generate a random sequence of values or strings, you should use just
 <strong>one</strong> <code>RandomDataGenerator</code> instance repeatedly.</li>
 <li>
 The "secure" methods are *much* slower. These should be used only when a
 cryptographically secure random sequence is required. A secure random
 sequence is a sequence of pseudo-random values which, in addition to being
 well-dispersed (so no subsequence of values is an any more likely than other
 subsequence of the the same length), also has the additional property that
 knowledge of values generated up to any point in the sequence does not make
 it any easier to predict subsequent values.</li>
 <li>
 When a new <code>RandomDataGenerator</code> is created, the underlying random
 number generators are <strong>not</strong> initialized. If you do not
 explicitly seed the default non-secure generator, it is seeded with the
 current time in milliseconds plus the system identity hash code on first use.
 The same holds for the secure generator. If you provide a <code>RandomGenerator</code>
 to the constructor, however, this generator is not reseeded by the constructor
 nor is it reseeded on first use.</li>
 <li>
 The <code>reSeed</code> and <code>reSeedSecure</code> methods delegate to the
 corresponding methods on the underlying <code>RandomGenerator</code> and
 <code>SecureRandom</code> instances. Therefore, <code>reSeed(long)</code>
 fully resets the initial state of the non-secure random number generator (so
 that reseeding with a specific value always results in the same subsequent
 random sequence); whereas reSeedSecure(long) does <strong>not</strong>
 reinitialize the secure random number generator (so secure sequences started
 with calls to reseedSecure(long) won't be identical).</li>
 <li>
 This implementation is not synchronized. The underlying <code>RandomGenerator</code>
 or <code>SecureRandom</code> instances are not protected by synchronization and
 are not guaranteed to be thread-safe.  Therefore, if an instance of this class
 is concurrently utilized by multiple threads, it is the responsibility of
 client code to synchronize access to seeding and data generation methods.
 </li>
 </ul>
 </p></div>
<dl><dt><span class="strong">Version:</span></dt>
  <dd>$Id: RandomDataImpl.java 1499808 2013-07-04 17:00:42Z sebb $</dd>
<dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../serialized-form.html#org.apache.commons.math3.random.RandomDataImpl">Serialized Form</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">&nbsp;</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/RandomDataImpl.html#RandomDataImpl()">RandomDataImpl</a></strong>()</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Construct a RandomDataImpl, using a default random generator as the source
 of randomness.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><strong><a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#RandomDataImpl(org.apache.commons.math3.random.RandomGenerator)">RandomDataImpl</a></strong>(<a href="../../../../../org/apache/commons/math3/random/RandomGenerator.html" title="interface in org.apache.commons.math3.random">RandomGenerator</a>&nbsp;rand)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Construct a RandomDataImpl using the supplied <a href="../../../../../org/apache/commons/math3/random/RandomGenerator.html" title="interface in org.apache.commons.math3.random"><code>RandomGenerator</code></a> as
 the source of (non-secure) random data.</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">&nbsp;</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>double</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextBeta(double, double)">nextBeta</a></strong>(double&nbsp;alpha,
        double&nbsp;beta)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Generates a random value from the <a href="../../../../../org/apache/commons/math3/distribution/BetaDistribution.html" title="class in org.apache.commons.math3.distribution"><code>Beta Distribution</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextBinomial(int, double)">nextBinomial</a></strong>(int&nbsp;numberOfTrials,
            double&nbsp;probabilityOfSuccess)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Generates a random value from the <a href="../../../../../org/apache/commons/math3/distribution/BinomialDistribution.html" title="class in org.apache.commons.math3.distribution"><code>Binomial Distribution</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>double</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextCauchy(double, double)">nextCauchy</a></strong>(double&nbsp;median,
          double&nbsp;scale)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Generates a random value from the <a href="../../../../../org/apache/commons/math3/distribution/CauchyDistribution.html" title="class in org.apache.commons.math3.distribution"><code>Cauchy Distribution</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/RandomDataImpl.html#nextChiSquare(double)">nextChiSquare</a></strong>(double&nbsp;df)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Generates a random value from the <a href="../../../../../org/apache/commons/math3/distribution/ChiSquaredDistribution.html" title="class in org.apache.commons.math3.distribution"><code>ChiSquare Distribution</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>double</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextExponential(double)">nextExponential</a></strong>(double&nbsp;mean)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Generates a random value from the exponential distribution
 with specified mean.</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/RandomDataImpl.html#nextF(double, double)">nextF</a></strong>(double&nbsp;numeratorDf,
     double&nbsp;denominatorDf)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Generates a random value from the <a href="../../../../../org/apache/commons/math3/distribution/FDistribution.html" title="class in org.apache.commons.math3.distribution"><code>F Distribution</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>double</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextGamma(double, double)">nextGamma</a></strong>(double&nbsp;shape,
         double&nbsp;scale)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Generates a random value from the
 <a href="../../../../../org/apache/commons/math3/distribution/GammaDistribution.html" title="class in org.apache.commons.math3.distribution"><code>Gamma Distribution</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/RandomDataImpl.html#nextGaussian(double, double)">nextGaussian</a></strong>(double&nbsp;mu,
            double&nbsp;sigma)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Generates a random value from the Normal (or Gaussian) distribution with
 specified mean and standard deviation.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextHexString(int)">nextHexString</a></strong>(int&nbsp;len)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Generates a random string of hex characters of length <code>len</code>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextHypergeometric(int, int, int)">nextHypergeometric</a></strong>(int&nbsp;populationSize,
                  int&nbsp;numberOfSuccesses,
                  int&nbsp;sampleSize)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Generates a random value from the <a href="../../../../../org/apache/commons/math3/distribution/HypergeometricDistribution.html" title="class in org.apache.commons.math3.distribution"><code>Hypergeometric Distribution</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextInt(int, int)">nextInt</a></strong>(int&nbsp;lower,
       int&nbsp;upper)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Generates a uniformly distributed random integer between <code>lower</code>
 and <code>upper</code> (endpoints included).</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextInversionDeviate(org.apache.commons.math3.distribution.IntegerDistribution)">nextInversionDeviate</a></strong>(<a href="../../../../../org/apache/commons/math3/distribution/IntegerDistribution.html" title="interface in org.apache.commons.math3.distribution">IntegerDistribution</a>&nbsp;distribution)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;
<div class="block"><i>use the distribution's sample() method</i></div>
</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>double</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextInversionDeviate(org.apache.commons.math3.distribution.RealDistribution)">nextInversionDeviate</a></strong>(<a href="../../../../../org/apache/commons/math3/distribution/RealDistribution.html" title="interface in org.apache.commons.math3.distribution">RealDistribution</a>&nbsp;distribution)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;
<div class="block"><i>use the distribution's sample() method</i></div>
</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextLong(long, long)">nextLong</a></strong>(long&nbsp;lower,
        long&nbsp;upper)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Generates a uniformly distributed random long integer between
 <code>lower</code> and <code>upper</code> (endpoints included).</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextPascal(int, double)">nextPascal</a></strong>(int&nbsp;r,
          double&nbsp;p)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Generates a random value from the <a href="../../../../../org/apache/commons/math3/distribution/PascalDistribution.html" title="class in org.apache.commons.math3.distribution"><code>Pascal Distribution</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>int[]</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextPermutation(int, int)">nextPermutation</a></strong>(int&nbsp;n,
               int&nbsp;k)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Generates an integer array of length <code>k</code> whose entries are selected
 randomly, without repetition, from the integers <code>0, ..., n - 1</code>
 (inclusive).</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextPoisson(double)">nextPoisson</a></strong>(double&nbsp;mean)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Generates a random value from the Poisson distribution with the given
 mean.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><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>[]</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextSample(java.util.Collection, int)">nextSample</a></strong>(<a href="http://docs.oracle.com/javase/6/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;?&gt;&nbsp;c,
          int&nbsp;k)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Returns an array of <code>k</code> objects selected randomly from the
 Collection <code>c</code>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextSecureHexString(int)">nextSecureHexString</a></strong>(int&nbsp;len)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Generates a random string of hex characters from a secure random
 sequence.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextSecureInt(int, int)">nextSecureInt</a></strong>(int&nbsp;lower,
             int&nbsp;upper)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Generates a uniformly distributed random integer between <code>lower</code>
 and <code>upper</code> (endpoints included) from a secure random sequence.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextSecureLong(long, long)">nextSecureLong</a></strong>(long&nbsp;lower,
              long&nbsp;upper)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Generates a uniformly distributed random long integer between
 <code>lower</code> and <code>upper</code> (endpoints included) from a secure random
 sequence.</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/RandomDataImpl.html#nextT(double)">nextT</a></strong>(double&nbsp;df)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Generates a random value from the <a href="../../../../../org/apache/commons/math3/distribution/TDistribution.html" title="class in org.apache.commons.math3.distribution"><code>T Distribution</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>double</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextUniform(double, double)">nextUniform</a></strong>(double&nbsp;lower,
           double&nbsp;upper)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Generates a uniformly distributed random value from the open interval
 <code>(lower, upper)</code> (i.e., endpoints excluded).</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/RandomDataImpl.html#nextUniform(double, double, boolean)">nextUniform</a></strong>(double&nbsp;lower,
           double&nbsp;upper,
           boolean&nbsp;lowerInclusive)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Generates a uniformly distributed random value from the interval
 <code>(lower, upper)</code> or the interval <code>[lower, upper)</code>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>double</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextWeibull(double, double)">nextWeibull</a></strong>(double&nbsp;shape,
           double&nbsp;scale)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Generates a random value from the <a href="../../../../../org/apache/commons/math3/distribution/WeibullDistribution.html" title="class in org.apache.commons.math3.distribution"><code>Weibull Distribution</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextZipf(int, double)">nextZipf</a></strong>(int&nbsp;numberOfElements,
        double&nbsp;exponent)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Generates a random value from the <a href="../../../../../org/apache/commons/math3/distribution/ZipfDistribution.html" title="class in org.apache.commons.math3.distribution"><code>Zipf Distribution</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#reSeed()">reSeed</a></strong>()</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Reseeds the random number generator with
 <code>System.currentTimeMillis() + System.identityHashCode(this))</code>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#reSeed(long)">reSeed</a></strong>(long&nbsp;seed)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Reseeds the random number generator with the supplied seed.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#reSeedSecure()">reSeedSecure</a></strong>()</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Reseeds the secure random number generator with the current time in
 milliseconds.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#reSeedSecure(long)">reSeedSecure</a></strong>(long&nbsp;seed)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Reseeds the secure random number generator with the supplied seed.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#setSecureAlgorithm(java.lang.String, java.lang.String)">setSecureAlgorithm</a></strong>(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;algorithm,
                  <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;provider)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Sets the PRNG algorithm for the underlying SecureRandom instance using
 the Security Provider API.</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&nbsp;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="RandomDataImpl()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>RandomDataImpl</h4>
<pre>public&nbsp;RandomDataImpl()</pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Construct a RandomDataImpl, using a default random generator as the source
 of randomness.

 <p>The default generator is a <a href="../../../../../org/apache/commons/math3/random/Well19937c.html" title="class in org.apache.commons.math3.random"><code>Well19937c</code></a> seeded
 with <code>System.currentTimeMillis() + System.identityHashCode(this))</code>.
 The generator is initialized and seeded on first use.</p></div>
</li>
</ul>
<a name="RandomDataImpl(org.apache.commons.math3.random.RandomGenerator)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>RandomDataImpl</h4>
<pre>public&nbsp;RandomDataImpl(<a href="../../../../../org/apache/commons/math3/random/RandomGenerator.html" title="interface in org.apache.commons.math3.random">RandomGenerator</a>&nbsp;rand)</pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Construct a RandomDataImpl using the supplied <a href="../../../../../org/apache/commons/math3/random/RandomGenerator.html" title="interface in org.apache.commons.math3.random"><code>RandomGenerator</code></a> as
 the source of (non-secure) random data.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>rand</code> - the source of (non-secure) random data
 (may be null, resulting in the default generator)</dd><dt><span class="strong">Since:</span></dt>
  <dd>1.1</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="nextHexString(int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nextHexString</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;nextHexString(int&nbsp;len)
                     throws <a href="../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Generates a random string of hex characters of length <code>len</code>.
 <p>
 The generated string will be random, but not cryptographically
 secure. To generate cryptographically secure strings, use
 <a href="../../../../../org/apache/commons/math3/random/RandomData.html#nextSecureHexString(int)"><code>RandomData.nextSecureHexString(int)</code></a>.
 </p>
 <p>
 <strong>Algorithm Description:</strong> hex strings are generated using a
 2-step process.
 <ol>
 <li><code>len / 2 + 1</code> binary bytes are generated using the underlying
 Random</li>
 <li>Each binary byte is translated into 2 hex digits</li>
 </ol>
 </p></div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/random/RandomData.html#nextHexString(int)">nextHexString</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/commons/math3/random/RandomData.html" title="interface in org.apache.commons.math3.random">RandomData</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>len</code> - the desired string length.</dd>
<dt><span class="strong">Returns:</span></dt><dd>the random string.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></code> - if <code>len &lt;= 0</code>.</dd></dl>
</li>
</ul>
<a name="nextInt(int, int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nextInt</h4>
<pre>public&nbsp;int&nbsp;nextInt(int&nbsp;lower,
          int&nbsp;upper)
            throws <a href="../../../../../org/apache/commons/math3/exception/NumberIsTooLargeException.html" title="class in org.apache.commons.math3.exception">NumberIsTooLargeException</a></pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Generates a uniformly distributed random integer between <code>lower</code>
 and <code>upper</code> (endpoints included).
 <p>
 The generated integer will be random, but not cryptographically secure.
 To generate cryptographically secure integer sequences, use
 <a href="../../../../../org/apache/commons/math3/random/RandomData.html#nextSecureInt(int, int)"><code>RandomData.nextSecureInt(int, int)</code></a>.
 </p></div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/random/RandomData.html#nextInt(int, int)">nextInt</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/commons/math3/random/RandomData.html" title="interface in org.apache.commons.math3.random">RandomData</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>lower</code> - lower bound for generated integer</dd><dd><code>upper</code> - upper bound for generated integer</dd>
<dt><span class="strong">Returns:</span></dt><dd>a random integer greater than or equal to <code>lower</code>
 and less than or equal to <code>upper</code></dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NumberIsTooLargeException.html" title="class in org.apache.commons.math3.exception">NumberIsTooLargeException</a></code> - if <code>lower &gt;= upper</code></dd></dl>
</li>
</ul>
<a name="nextLong(long, long)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nextLong</h4>
<pre>public&nbsp;long&nbsp;nextLong(long&nbsp;lower,
            long&nbsp;upper)
              throws <a href="../../../../../org/apache/commons/math3/exception/NumberIsTooLargeException.html" title="class in org.apache.commons.math3.exception">NumberIsTooLargeException</a></pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Generates a uniformly distributed random long integer between
 <code>lower</code> and <code>upper</code> (endpoints included).
 <p>
 The generated long integer values will be random, but not
 cryptographically secure. To generate cryptographically secure sequences
 of longs, use <a href="../../../../../org/apache/commons/math3/random/RandomData.html#nextSecureLong(long, long)"><code>RandomData.nextSecureLong(long, long)</code></a>.
 </p></div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/random/RandomData.html#nextLong(long, long)">nextLong</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/commons/math3/random/RandomData.html" title="interface in org.apache.commons.math3.random">RandomData</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>lower</code> - lower bound for generated long integer</dd><dd><code>upper</code> - upper bound for generated long integer</dd>
<dt><span class="strong">Returns:</span></dt><dd>a random long integer greater than or equal to <code>lower</code> and
 less than or equal to <code>upper</code></dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NumberIsTooLargeException.html" title="class in org.apache.commons.math3.exception">NumberIsTooLargeException</a></code> - if <code>lower &gt;= upper</code></dd></dl>
</li>
</ul>
<a name="nextSecureHexString(int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nextSecureHexString</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;nextSecureHexString(int&nbsp;len)
                           throws <a href="../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Generates a random string of hex characters from a secure random
 sequence.
 <p>
 If cryptographic security is not required, use
 <a href="../../../../../org/apache/commons/math3/random/RandomData.html#nextHexString(int)"><code>RandomData.nextHexString(int)</code></a>.
 </p>
 <p>
 <strong>Algorithm Description:</strong> hex strings are generated in
 40-byte segments using a 3-step process.
 <ol>
 <li>
 20 random bytes are generated using the underlying
 <code>SecureRandom</code>.</li>
 <li>
 SHA-1 hash is applied to yield a 20-byte binary digest.</li>
 <li>
 Each byte of the binary digest is converted to 2 hex digits.</li>
 </ol>
 </p></div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/random/RandomData.html#nextSecureHexString(int)">nextSecureHexString</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/commons/math3/random/RandomData.html" title="interface in org.apache.commons.math3.random">RandomData</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>len</code> - the length of the string to be generated</dd>
<dt><span class="strong">Returns:</span></dt><dd>a random string of hex characters of length <code>len</code></dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></code> - if <code>len &lt;= 0</code></dd></dl>
</li>
</ul>
<a name="nextSecureInt(int, int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nextSecureInt</h4>
<pre>public&nbsp;int&nbsp;nextSecureInt(int&nbsp;lower,
                int&nbsp;upper)
                  throws <a href="../../../../../org/apache/commons/math3/exception/NumberIsTooLargeException.html" title="class in org.apache.commons.math3.exception">NumberIsTooLargeException</a></pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Generates a uniformly distributed random integer between <code>lower</code>
 and <code>upper</code> (endpoints included) from a secure random sequence.
 <p>
 Sequences of integers generated using this method will be
 cryptographically secure. If cryptographic security is not required,
 <a href="../../../../../org/apache/commons/math3/random/RandomData.html#nextInt(int, int)"><code>RandomData.nextInt(int, int)</code></a> should be used instead of this method.</p>
 <p>
 <strong>Definition</strong>:
 <a href="http://en.wikipedia.org/wiki/Cryptographically_secure_pseudo-random_number_generator">
 Secure Random Sequence</a></p></div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/random/RandomData.html#nextSecureInt(int, int)">nextSecureInt</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/commons/math3/random/RandomData.html" title="interface in org.apache.commons.math3.random">RandomData</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>lower</code> - lower bound for generated integer</dd><dd><code>upper</code> - upper bound for generated integer</dd>
<dt><span class="strong">Returns:</span></dt><dd>a random integer greater than or equal to <code>lower</code> and less
 than or equal to <code>upper</code>.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NumberIsTooLargeException.html" title="class in org.apache.commons.math3.exception">NumberIsTooLargeException</a></code> - if <code>lower &gt;= upper</code>.</dd></dl>
</li>
</ul>
<a name="nextSecureLong(long, long)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nextSecureLong</h4>
<pre>public&nbsp;long&nbsp;nextSecureLong(long&nbsp;lower,
                  long&nbsp;upper)
                    throws <a href="../../../../../org/apache/commons/math3/exception/NumberIsTooLargeException.html" title="class in org.apache.commons.math3.exception">NumberIsTooLargeException</a></pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Generates a uniformly distributed random long integer between
 <code>lower</code> and <code>upper</code> (endpoints included) from a secure random
 sequence.
 <p>
 Sequences of long values generated using this method will be
 cryptographically secure. If cryptographic security is not required,
 <a href="../../../../../org/apache/commons/math3/random/RandomData.html#nextLong(long, long)"><code>RandomData.nextLong(long, long)</code></a> should be used instead of this method.</p>
 <p>
 <strong>Definition</strong>:
 <a href="http://en.wikipedia.org/wiki/Cryptographically_secure_pseudo-random_number_generator">
 Secure Random Sequence</a></p></div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/random/RandomData.html#nextSecureLong(long, long)">nextSecureLong</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/commons/math3/random/RandomData.html" title="interface in org.apache.commons.math3.random">RandomData</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>lower</code> - lower bound for generated integer</dd><dd><code>upper</code> - upper bound for generated integer</dd>
<dt><span class="strong">Returns:</span></dt><dd>a random long integer greater than or equal to <code>lower</code> and
 less than or equal to <code>upper</code>.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NumberIsTooLargeException.html" title="class in org.apache.commons.math3.exception">NumberIsTooLargeException</a></code> - if <code>lower &gt;= upper</code>.</dd></dl>
</li>
</ul>
<a name="nextPoisson(double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nextPoisson</h4>
<pre>public&nbsp;long&nbsp;nextPoisson(double&nbsp;mean)
                 throws <a href="../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Generates a random value from the Poisson distribution with the given
 mean.
 <p>
 <strong>Definition</strong>:
 <a href="http://www.itl.nist.gov/div898/handbook/eda/section3/eda366j.htm">
 Poisson Distribution</a></p>
 <p>
 <strong>Algorithm Description</strong>:
 <ul><li> For small means, uses simulation of a Poisson process
 using Uniform deviates, as described
 <a href="http://irmi.epfl.ch/cmos/Pmmi/interactive/rng7.htm"> here.</a>
 The Poisson process (and hence value returned) is bounded by 1000 * mean.</li>

 <li> For large means, uses the rejection algorithm described in <br/>
 Devroye, Luc. (1981).<i>The Computer Generation of Poisson Random Variables</i>
 <strong>Computing</strong> vol. 26 pp. 197-207.</li></ul></p></div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/random/RandomData.html#nextPoisson(double)">nextPoisson</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/commons/math3/random/RandomData.html" title="interface in org.apache.commons.math3.random">RandomData</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>mean</code> - the mean of the Poisson distribution</dd>
<dt><span class="strong">Returns:</span></dt><dd>a random value following the specified Poisson distribution</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></code> - if <code>mean &lt;= 0</code>.</dd></dl>
</li>
</ul>
<a name="nextGaussian(double, double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nextGaussian</h4>
<pre>public&nbsp;double&nbsp;nextGaussian(double&nbsp;mu,
                  double&nbsp;sigma)
                    throws <a href="../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Generates a random value from the Normal (or Gaussian) distribution with
 specified mean and standard deviation.
 <p>
 <strong>Definition</strong>:
 <a href="http://www.itl.nist.gov/div898/handbook/eda/section3/eda3661.htm">
 Normal Distribution</a></p></div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/random/RandomData.html#nextGaussian(double, double)">nextGaussian</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/commons/math3/random/RandomData.html" title="interface in org.apache.commons.math3.random">RandomData</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>mu</code> - the mean of the distribution</dd><dd><code>sigma</code> - the standard deviation of the distribution</dd>
<dt><span class="strong">Returns:</span></dt><dd>a random value following the specified Gaussian distribution</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></code> - if <code>sigma &lt;= 0</code>.</dd></dl>
</li>
</ul>
<a name="nextExponential(double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nextExponential</h4>
<pre>public&nbsp;double&nbsp;nextExponential(double&nbsp;mean)
                       throws <a href="../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Generates a random value from the exponential distribution
 with specified mean.
 <p>
 <strong>Definition</strong>:
 <a href="http://www.itl.nist.gov/div898/handbook/eda/section3/eda3667.htm">
 Exponential Distribution</a></p>

 <p>
 <strong>Algorithm Description</strong>: Uses the Algorithm SA (Ahrens)
 from p. 876 in:
 [1]: Ahrens, J. H. and Dieter, U. (1972). Computer methods for
 sampling from the exponential and normal distributions.
 Communications of the ACM, 15, 873-882.
 </p></div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/random/RandomData.html#nextExponential(double)">nextExponential</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/commons/math3/random/RandomData.html" title="interface in org.apache.commons.math3.random">RandomData</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>mean</code> - the mean of the distribution</dd>
<dt><span class="strong">Returns:</span></dt><dd>a random value following the specified exponential distribution</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></code> - if <code>mean &lt;= 0</code>.</dd></dl>
</li>
</ul>
<a name="nextUniform(double, double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nextUniform</h4>
<pre>public&nbsp;double&nbsp;nextUniform(double&nbsp;lower,
                 double&nbsp;upper)
                   throws <a href="../../../../../org/apache/commons/math3/exception/NumberIsTooLargeException.html" title="class in org.apache.commons.math3.exception">NumberIsTooLargeException</a>,
                          <a href="../../../../../org/apache/commons/math3/exception/NotFiniteNumberException.html" title="class in org.apache.commons.math3.exception">NotFiniteNumberException</a>,
                          <a href="../../../../../org/apache/commons/math3/exception/NotANumberException.html" title="class in org.apache.commons.math3.exception">NotANumberException</a></pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Generates a uniformly distributed random value from the open interval
 <code>(lower, upper)</code> (i.e., endpoints excluded).
 <p>
 <strong>Definition</strong>:
 <a href="http://www.itl.nist.gov/div898/handbook/eda/section3/eda3662.htm">
 Uniform Distribution</a> <code>lower</code> and <code>upper - lower</code> are the
 <a href = "http://www.itl.nist.gov/div898/handbook/eda/section3/eda364.htm">
 location and scale parameters</a>, respectively.</p>

 <p>
 <strong>Algorithm Description</strong>: scales the output of
 Random.nextDouble(), but rejects 0 values (i.e., will generate another
 random double if Random.nextDouble() returns 0). This is necessary to
 provide a symmetric output interval (both endpoints excluded).
 </p></div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/random/RandomData.html#nextUniform(double, double)">nextUniform</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/commons/math3/random/RandomData.html" title="interface in org.apache.commons.math3.random">RandomData</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>lower</code> - the exclusive lower bound of the support</dd><dd><code>upper</code> - the exclusive upper bound of the support</dd>
<dt><span class="strong">Returns:</span></dt><dd>a uniformly distributed random value between lower and upper
 (exclusive)</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NumberIsTooLargeException.html" title="class in org.apache.commons.math3.exception">NumberIsTooLargeException</a></code> - if <code>lower &gt;= upper</code></dd>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NotFiniteNumberException.html" title="class in org.apache.commons.math3.exception">NotFiniteNumberException</a></code> - if one of the bounds is infinite</dd>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NotANumberException.html" title="class in org.apache.commons.math3.exception">NotANumberException</a></code> - if one of the bounds is NaN</dd></dl>
</li>
</ul>
<a name="nextUniform(double, double, boolean)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nextUniform</h4>
<pre>public&nbsp;double&nbsp;nextUniform(double&nbsp;lower,
                 double&nbsp;upper,
                 boolean&nbsp;lowerInclusive)
                   throws <a href="../../../../../org/apache/commons/math3/exception/NumberIsTooLargeException.html" title="class in org.apache.commons.math3.exception">NumberIsTooLargeException</a>,
                          <a href="../../../../../org/apache/commons/math3/exception/NotFiniteNumberException.html" title="class in org.apache.commons.math3.exception">NotFiniteNumberException</a>,
                          <a href="../../../../../org/apache/commons/math3/exception/NotANumberException.html" title="class in org.apache.commons.math3.exception">NotANumberException</a></pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Generates a uniformly distributed random value from the interval
 <code>(lower, upper)</code> or the interval <code>[lower, upper)</code>. The lower
 bound is thus optionally included, while the upper bound is always
 excluded.
 <p>
 <strong>Definition</strong>:
 <a href="http://www.itl.nist.gov/div898/handbook/eda/section3/eda3662.htm">
 Uniform Distribution</a> <code>lower</code> and <code>upper - lower</code> are the
 <a href = "http://www.itl.nist.gov/div898/handbook/eda/section3/eda364.htm">
 location and scale parameters</a>, respectively.</p>

 <p>
 <strong>Algorithm Description</strong>: if the lower bound is excluded,
 scales the output of Random.nextDouble(), but rejects 0 values (i.e.,
 will generate another random double if Random.nextDouble() returns 0).
 This is necessary to provide a symmetric output interval (both
 endpoints excluded).
 </p></div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/random/RandomData.html#nextUniform(double, double, boolean)">nextUniform</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/commons/math3/random/RandomData.html" title="interface in org.apache.commons.math3.random">RandomData</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>lower</code> - the lower bound of the support</dd><dd><code>upper</code> - the exclusive upper bound of the support</dd><dd><code>lowerInclusive</code> - <code>true</code> if the lower bound is inclusive</dd>
<dt><span class="strong">Returns:</span></dt><dd>uniformly distributed random value in the <code>(lower, upper)</code>
 interval, if <code>lowerInclusive</code> is <code>false</code>, or in the
 <code>[lower, upper)</code> interval, if <code>lowerInclusive</code> is
 <code>true</code></dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NumberIsTooLargeException.html" title="class in org.apache.commons.math3.exception">NumberIsTooLargeException</a></code> - if <code>lower &gt;= upper</code></dd>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NotFiniteNumberException.html" title="class in org.apache.commons.math3.exception">NotFiniteNumberException</a></code> - if one of the bounds is infinite</dd>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NotANumberException.html" title="class in org.apache.commons.math3.exception">NotANumberException</a></code> - if one of the bounds is NaN</dd><dt><span class="strong">Since:</span></dt>
  <dd>3.0</dd></dl>
</li>
</ul>
<a name="nextBeta(double, double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nextBeta</h4>
<pre>public&nbsp;double&nbsp;nextBeta(double&nbsp;alpha,
              double&nbsp;beta)</pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Generates a random value from the <a href="../../../../../org/apache/commons/math3/distribution/BetaDistribution.html" title="class in org.apache.commons.math3.distribution"><code>Beta Distribution</code></a>.
 This implementation uses <a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextInversionDeviate(org.apache.commons.math3.distribution.RealDistribution)"><code>inversion</code></a>
 to generate random values.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>alpha</code> - first distribution shape parameter</dd><dd><code>beta</code> - second distribution shape parameter</dd>
<dt><span class="strong">Returns:</span></dt><dd>random value sampled from the beta(alpha, beta) distribution</dd><dt><span class="strong">Since:</span></dt>
  <dd>2.2</dd></dl>
</li>
</ul>
<a name="nextBinomial(int, double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nextBinomial</h4>
<pre>public&nbsp;int&nbsp;nextBinomial(int&nbsp;numberOfTrials,
               double&nbsp;probabilityOfSuccess)</pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Generates a random value from the <a href="../../../../../org/apache/commons/math3/distribution/BinomialDistribution.html" title="class in org.apache.commons.math3.distribution"><code>Binomial Distribution</code></a>.
 This implementation uses <a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextInversionDeviate(org.apache.commons.math3.distribution.RealDistribution)"><code>inversion</code></a>
 to generate random values.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>numberOfTrials</code> - number of trials of the Binomial distribution</dd><dd><code>probabilityOfSuccess</code> - probability of success of the Binomial distribution</dd>
<dt><span class="strong">Returns:</span></dt><dd>random value sampled from the Binomial(numberOfTrials, probabilityOfSuccess) distribution</dd><dt><span class="strong">Since:</span></dt>
  <dd>2.2</dd></dl>
</li>
</ul>
<a name="nextCauchy(double, double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nextCauchy</h4>
<pre>public&nbsp;double&nbsp;nextCauchy(double&nbsp;median,
                double&nbsp;scale)</pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Generates a random value from the <a href="../../../../../org/apache/commons/math3/distribution/CauchyDistribution.html" title="class in org.apache.commons.math3.distribution"><code>Cauchy Distribution</code></a>.
 This implementation uses <a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextInversionDeviate(org.apache.commons.math3.distribution.RealDistribution)"><code>inversion</code></a>
 to generate random values.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>median</code> - the median of the Cauchy distribution</dd><dd><code>scale</code> - the scale parameter of the Cauchy distribution</dd>
<dt><span class="strong">Returns:</span></dt><dd>random value sampled from the Cauchy(median, scale) distribution</dd><dt><span class="strong">Since:</span></dt>
  <dd>2.2</dd></dl>
</li>
</ul>
<a name="nextChiSquare(double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nextChiSquare</h4>
<pre>public&nbsp;double&nbsp;nextChiSquare(double&nbsp;df)</pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Generates a random value from the <a href="../../../../../org/apache/commons/math3/distribution/ChiSquaredDistribution.html" title="class in org.apache.commons.math3.distribution"><code>ChiSquare Distribution</code></a>.
 This implementation uses <a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextInversionDeviate(org.apache.commons.math3.distribution.RealDistribution)"><code>inversion</code></a>
 to generate random values.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>df</code> - the degrees of freedom of the ChiSquare distribution</dd>
<dt><span class="strong">Returns:</span></dt><dd>random value sampled from the ChiSquare(df) distribution</dd><dt><span class="strong">Since:</span></dt>
  <dd>2.2</dd></dl>
</li>
</ul>
<a name="nextF(double, double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nextF</h4>
<pre>public&nbsp;double&nbsp;nextF(double&nbsp;numeratorDf,
           double&nbsp;denominatorDf)
             throws <a href="../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Generates a random value from the <a href="../../../../../org/apache/commons/math3/distribution/FDistribution.html" title="class in org.apache.commons.math3.distribution"><code>F Distribution</code></a>.
 This implementation uses <a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextInversionDeviate(org.apache.commons.math3.distribution.RealDistribution)"><code>inversion</code></a>
 to generate random values.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>numeratorDf</code> - the numerator degrees of freedom of the F distribution</dd><dd><code>denominatorDf</code> - the denominator degrees of freedom of the F distribution</dd>
<dt><span class="strong">Returns:</span></dt><dd>random value sampled from the F(numeratorDf, denominatorDf) distribution</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></code> - if
 <code>numeratorDf &lt;= 0</code> or <code>denominatorDf &lt;= 0</code>.</dd><dt><span class="strong">Since:</span></dt>
  <dd>2.2</dd></dl>
</li>
</ul>
<a name="nextGamma(double, double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nextGamma</h4>
<pre>public&nbsp;double&nbsp;nextGamma(double&nbsp;shape,
               double&nbsp;scale)
                 throws <a href="../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block"><p>Generates a random value from the
 <a href="../../../../../org/apache/commons/math3/distribution/GammaDistribution.html" title="class in org.apache.commons.math3.distribution"><code>Gamma Distribution</code></a>.</p>

 <p>This implementation uses the following algorithms: </p>

 <p>For 0 < shape < 1: <br/>
 Ahrens, J. H. and Dieter, U., <i>Computer methods for
 sampling from gamma, beta, Poisson and binomial distributions.</i>
 Computing, 12, 223-246, 1974.</p>

 <p>For shape >= 1: <br/>
 Marsaglia and Tsang, <i>A Simple Method for Generating
 Gamma Variables.</i> ACM Transactions on Mathematical Software,
 Volume 26 Issue 3, September, 2000.</p></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>shape</code> - the median of the Gamma distribution</dd><dd><code>scale</code> - the scale parameter of the Gamma distribution</dd>
<dt><span class="strong">Returns:</span></dt><dd>random value sampled from the Gamma(shape, scale) distribution</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></code> - if <code>shape &lt;= 0</code> or
 <code>scale &lt;= 0</code>.</dd><dt><span class="strong">Since:</span></dt>
  <dd>2.2</dd></dl>
</li>
</ul>
<a name="nextHypergeometric(int, int, int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nextHypergeometric</h4>
<pre>public&nbsp;int&nbsp;nextHypergeometric(int&nbsp;populationSize,
                     int&nbsp;numberOfSuccesses,
                     int&nbsp;sampleSize)
                       throws <a href="../../../../../org/apache/commons/math3/exception/NotPositiveException.html" title="class in org.apache.commons.math3.exception">NotPositiveException</a>,
                              <a href="../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a>,
                              <a href="../../../../../org/apache/commons/math3/exception/NumberIsTooLargeException.html" title="class in org.apache.commons.math3.exception">NumberIsTooLargeException</a></pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Generates a random value from the <a href="../../../../../org/apache/commons/math3/distribution/HypergeometricDistribution.html" title="class in org.apache.commons.math3.distribution"><code>Hypergeometric Distribution</code></a>.
 This implementation uses <a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextInversionDeviate(org.apache.commons.math3.distribution.IntegerDistribution)"><code>inversion</code></a>
 to generate random values.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>populationSize</code> - the population size of the Hypergeometric distribution</dd><dd><code>numberOfSuccesses</code> - number of successes in the population of the Hypergeometric distribution</dd><dd><code>sampleSize</code> - the sample size of the Hypergeometric distribution</dd>
<dt><span class="strong">Returns:</span></dt><dd>random value sampled from the Hypergeometric(numberOfSuccesses, sampleSize) distribution</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NumberIsTooLargeException.html" title="class in org.apache.commons.math3.exception">NumberIsTooLargeException</a></code> - if <code>numberOfSuccesses &gt; populationSize</code>,
 or <code>sampleSize &gt; populationSize</code>.</dd>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></code> - if <code>populationSize &lt;= 0</code>.</dd>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NotPositiveException.html" title="class in org.apache.commons.math3.exception">NotPositiveException</a></code> - if <code>numberOfSuccesses &lt; 0</code>.</dd><dt><span class="strong">Since:</span></dt>
  <dd>2.2</dd></dl>
</li>
</ul>
<a name="nextPascal(int, double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nextPascal</h4>
<pre>public&nbsp;int&nbsp;nextPascal(int&nbsp;r,
             double&nbsp;p)
               throws <a href="../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a>,
                      <a href="../../../../../org/apache/commons/math3/exception/OutOfRangeException.html" title="class in org.apache.commons.math3.exception">OutOfRangeException</a></pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Generates a random value from the <a href="../../../../../org/apache/commons/math3/distribution/PascalDistribution.html" title="class in org.apache.commons.math3.distribution"><code>Pascal Distribution</code></a>.
 This implementation uses <a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextInversionDeviate(org.apache.commons.math3.distribution.IntegerDistribution)"><code>inversion</code></a>
 to generate random values.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>r</code> - the number of successes of the Pascal distribution</dd><dd><code>p</code> - the probability of success of the Pascal distribution</dd>
<dt><span class="strong">Returns:</span></dt><dd>random value sampled from the Pascal(r, p) distribution</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></code> - if the number of successes is not positive</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 probability of success is not in the
 range <code>[0, 1]</code>.</dd><dt><span class="strong">Since:</span></dt>
  <dd>2.2</dd></dl>
</li>
</ul>
<a name="nextT(double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nextT</h4>
<pre>public&nbsp;double&nbsp;nextT(double&nbsp;df)
             throws <a href="../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Generates a random value from the <a href="../../../../../org/apache/commons/math3/distribution/TDistribution.html" title="class in org.apache.commons.math3.distribution"><code>T Distribution</code></a>.
 This implementation uses <a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextInversionDeviate(org.apache.commons.math3.distribution.RealDistribution)"><code>inversion</code></a>
 to generate random values.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>df</code> - the degrees of freedom of the T distribution</dd>
<dt><span class="strong">Returns:</span></dt><dd>random value from the T(df) distribution</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></code> - if <code>df &lt;= 0</code></dd><dt><span class="strong">Since:</span></dt>
  <dd>2.2</dd></dl>
</li>
</ul>
<a name="nextWeibull(double, double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nextWeibull</h4>
<pre>public&nbsp;double&nbsp;nextWeibull(double&nbsp;shape,
                 double&nbsp;scale)
                   throws <a href="../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Generates a random value from the <a href="../../../../../org/apache/commons/math3/distribution/WeibullDistribution.html" title="class in org.apache.commons.math3.distribution"><code>Weibull Distribution</code></a>.
 This implementation uses <a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextInversionDeviate(org.apache.commons.math3.distribution.RealDistribution)"><code>inversion</code></a>
 to generate random values.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>shape</code> - the shape parameter of the Weibull distribution</dd><dd><code>scale</code> - the scale parameter of the Weibull distribution</dd>
<dt><span class="strong">Returns:</span></dt><dd>random value sampled from the Weibull(shape, size) distribution</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></code> - if <code>shape &lt;= 0</code> or
 <code>scale &lt;= 0</code>.</dd><dt><span class="strong">Since:</span></dt>
  <dd>2.2</dd></dl>
</li>
</ul>
<a name="nextZipf(int, double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nextZipf</h4>
<pre>public&nbsp;int&nbsp;nextZipf(int&nbsp;numberOfElements,
           double&nbsp;exponent)
             throws <a href="../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Generates a random value from the <a href="../../../../../org/apache/commons/math3/distribution/ZipfDistribution.html" title="class in org.apache.commons.math3.distribution"><code>Zipf Distribution</code></a>.
 This implementation uses <a href="../../../../../org/apache/commons/math3/random/RandomDataImpl.html#nextInversionDeviate(org.apache.commons.math3.distribution.IntegerDistribution)"><code>inversion</code></a>
 to generate random values.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>numberOfElements</code> - the number of elements of the ZipfDistribution</dd><dd><code>exponent</code> - the exponent of the ZipfDistribution</dd>
<dt><span class="strong">Returns:</span></dt><dd>random value sampled from the Zipf(numberOfElements, exponent) distribution</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></code> - if <code>numberOfElements &lt;= 0</code>
 or <code>exponent &lt;= 0</code>.</dd><dt><span class="strong">Since:</span></dt>
  <dd>2.2</dd></dl>
</li>
</ul>
<a name="reSeed(long)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>reSeed</h4>
<pre>public&nbsp;void&nbsp;reSeed(long&nbsp;seed)</pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Reseeds the random number generator with the supplied seed.
 <p>
 Will create and initialize if null.
 </p></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>seed</code> - the seed value to use</dd></dl>
</li>
</ul>
<a name="reSeedSecure()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>reSeedSecure</h4>
<pre>public&nbsp;void&nbsp;reSeedSecure()</pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Reseeds the secure random number generator with the current time in
 milliseconds.
 <p>
 Will create and initialize if null.
 </p></div>
</li>
</ul>
<a name="reSeedSecure(long)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>reSeedSecure</h4>
<pre>public&nbsp;void&nbsp;reSeedSecure(long&nbsp;seed)</pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Reseeds the secure random number generator with the supplied seed.
 <p>
 Will create and initialize if null.
 </p></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>seed</code> - the seed value to use</dd></dl>
</li>
</ul>
<a name="reSeed()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>reSeed</h4>
<pre>public&nbsp;void&nbsp;reSeed()</pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Reseeds the random number generator with
 <code>System.currentTimeMillis() + System.identityHashCode(this))</code>.</div>
</li>
</ul>
<a name="setSecureAlgorithm(java.lang.String, java.lang.String)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setSecureAlgorithm</h4>
<pre>public&nbsp;void&nbsp;setSecureAlgorithm(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;algorithm,
                      <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;provider)
                        throws <a href="http://docs.oracle.com/javase/6/docs/api/java/security/NoSuchAlgorithmException.html?is-external=true" title="class or interface in java.security">NoSuchAlgorithmException</a>,
                               <a href="http://docs.oracle.com/javase/6/docs/api/java/security/NoSuchProviderException.html?is-external=true" title="class or interface in java.security">NoSuchProviderException</a></pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Sets the PRNG algorithm for the underlying SecureRandom instance using
 the Security Provider API. The Security Provider API is defined in <a
 href =
 "http://java.sun.com/j2se/1.3/docs/guide/security/CryptoSpec.html#AppA">
 Java Cryptography Architecture API Specification & Reference.</a>
 <p>
 <strong>USAGE NOTE:</strong> This method carries <i>significant</i>
 overhead and may take several seconds to execute.
 </p></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>algorithm</code> - the name of the PRNG algorithm</dd><dd><code>provider</code> - the name of the provider</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/security/NoSuchAlgorithmException.html?is-external=true" title="class or interface in java.security">NoSuchAlgorithmException</a></code> - if the specified algorithm is not available</dd>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/security/NoSuchProviderException.html?is-external=true" title="class or interface in java.security">NoSuchProviderException</a></code> - if the specified provider is not installed</dd></dl>
</li>
</ul>
<a name="nextPermutation(int, int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nextPermutation</h4>
<pre>public&nbsp;int[]&nbsp;nextPermutation(int&nbsp;n,
                    int&nbsp;k)
                      throws <a href="../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a>,
                             <a href="../../../../../org/apache/commons/math3/exception/NumberIsTooLargeException.html" title="class in org.apache.commons.math3.exception">NumberIsTooLargeException</a></pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Generates an integer array of length <code>k</code> whose entries are selected
 randomly, without repetition, from the integers <code>0, ..., n - 1</code>
 (inclusive).
 <p>
 Generated arrays represent permutations of <code>n</code> taken <code>k</code> at a
 time.</p>

 <p>
 Uses a 2-cycle permutation shuffle. The shuffling process is described <a
 href="http://www.maths.abdn.ac.uk/~igc/tch/mx4002/notes/node83.html">
 here</a>.
 </p></div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/random/RandomData.html#nextPermutation(int, int)">nextPermutation</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/commons/math3/random/RandomData.html" title="interface in org.apache.commons.math3.random">RandomData</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>n</code> - the domain of the permutation</dd><dd><code>k</code> - the size of the permutation</dd>
<dt><span class="strong">Returns:</span></dt><dd>a random <code>k</code>-permutation of <code>n</code>, as an array of
 integers</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></code> - if <code>k &lt;= 0</code>.</dd>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NumberIsTooLargeException.html" title="class in org.apache.commons.math3.exception">NumberIsTooLargeException</a></code> - if <code>k &gt; n</code>.</dd></dl>
</li>
</ul>
<a name="nextSample(java.util.Collection, int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nextSample</h4>
<pre>public&nbsp;<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>[]&nbsp;nextSample(<a href="http://docs.oracle.com/javase/6/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;?&gt;&nbsp;c,
                  int&nbsp;k)
                    throws <a href="../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a>,
                           <a href="../../../../../org/apache/commons/math3/exception/NumberIsTooLargeException.html" title="class in org.apache.commons.math3.exception">NumberIsTooLargeException</a></pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Returns an array of <code>k</code> objects selected randomly from the
 Collection <code>c</code>.
 <p>
 Sampling from <code>c</code> is without replacement; but if <code>c</code> contains
 identical objects, the sample may include repeats.  If all elements of
 <code>c</code> are distinct, the resulting object array represents a
 <a href="http://rkb.home.cern.ch/rkb/AN16pp/node250.html#SECTION0002500000000000000000">
 Simple Random Sample</a> of size <code>k</code> from the elements of
 <code>c</code>.</p>

 <p>
 <strong>Algorithm Description</strong>: Uses a 2-cycle permutation
 shuffle to generate a random permutation of <code>c.size()</code> and
 then returns the elements whose indexes correspond to the elements of the
 generated permutation. This technique is described, and proven to
 generate random samples <a
 href="http://www.maths.abdn.ac.uk/~igc/tch/mx4002/notes/node83.html">
 here</a>
 </p></div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/random/RandomData.html#nextSample(java.util.Collection, int)">nextSample</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/commons/math3/random/RandomData.html" title="interface in org.apache.commons.math3.random">RandomData</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>c</code> - the collection to be sampled</dd><dd><code>k</code> - the size of the sample</dd>
<dt><span class="strong">Returns:</span></dt><dd>a random sample of <code>k</code> elements from <code>c</code></dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></code> - if <code>k &lt;= 0</code>.</dd>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NumberIsTooLargeException.html" title="class in org.apache.commons.math3.exception">NumberIsTooLargeException</a></code> - if <code>k &gt; c.size()</code>.</dd></dl>
</li>
</ul>
<a name="nextInversionDeviate(org.apache.commons.math3.distribution.RealDistribution)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nextInversionDeviate</h4>
<pre><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
public&nbsp;double&nbsp;nextInversionDeviate(<a href="../../../../../org/apache/commons/math3/distribution/RealDistribution.html" title="interface in org.apache.commons.math3.distribution">RealDistribution</a>&nbsp;distribution)
                            throws <a href="../../../../../org/apache/commons/math3/exception/MathIllegalArgumentException.html" title="class in org.apache.commons.math3.exception">MathIllegalArgumentException</a></pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;<i>use the distribution's sample() method</i></div>
<div class="block">Generate a random deviate from the given distribution using the
 <a href="http://en.wikipedia.org/wiki/Inverse_transform_sampling"> inversion method.</a></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>distribution</code> - Continuous distribution to generate a random value from</dd>
<dt><span class="strong">Returns:</span></dt><dd>a random value sampled from the given distribution</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/MathIllegalArgumentException.html" title="class in org.apache.commons.math3.exception">MathIllegalArgumentException</a></code> - if the underlynig distribution throws one</dd><dt><span class="strong">Since:</span></dt>
  <dd>2.2</dd></dl>
</li>
</ul>
<a name="nextInversionDeviate(org.apache.commons.math3.distribution.IntegerDistribution)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>nextInversionDeviate</h4>
<pre><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
public&nbsp;int&nbsp;nextInversionDeviate(<a href="../../../../../org/apache/commons/math3/distribution/IntegerDistribution.html" title="interface in org.apache.commons.math3.distribution">IntegerDistribution</a>&nbsp;distribution)
                         throws <a href="../../../../../org/apache/commons/math3/exception/MathIllegalArgumentException.html" title="class in org.apache.commons.math3.exception">MathIllegalArgumentException</a></pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;<i>use the distribution's sample() method</i></div>
<div class="block">Generate a random deviate from the given distribution using the
 <a href="http://en.wikipedia.org/wiki/Inverse_transform_sampling"> inversion method.</a></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>distribution</code> - Integer distribution to generate a random value from</dd>
<dt><span class="strong">Returns:</span></dt><dd>a random value sampled from the given distribution</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/MathIllegalArgumentException.html" title="class in org.apache.commons.math3.exception">MathIllegalArgumentException</a></code> - if the underlynig distribution throws one</dd><dt><span class="strong">Since:</span></dt>
  <dd>2.2</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/RandomDataImpl.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/RandomDataGenerator.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/RandomGenerator.html" title="interface 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/RandomDataImpl.html" target="_top">Frames</a></li>
<li><a href="RandomDataImpl.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:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</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 &#169; 2003&#x2013;2014 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>
