MATH-361
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@962515 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
b5a23d01b6
commit
e038fdb1cc
|
@ -19,7 +19,7 @@ package org.apache.commons.math.analysis.polynomials;
|
|||
import java.io.Serializable;
|
||||
import java.util.Arrays;
|
||||
|
||||
import org.apache.commons.math.MathRuntimeException;
|
||||
import org.apache.commons.math.exception.NotStrictlyPositiveException;
|
||||
import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
|
||||
import org.apache.commons.math.analysis.UnivariateRealFunction;
|
||||
import org.apache.commons.math.util.LocalizedFormats;
|
||||
|
@ -58,12 +58,13 @@ public class PolynomialFunction implements DifferentiableUnivariateRealFunction,
|
|||
*
|
||||
* @param c polynomial coefficients
|
||||
* @throws NullPointerException if c is null
|
||||
* @throws IllegalArgumentException if c is empty
|
||||
* @throws NotStrictlyPositiveException if c is empty
|
||||
*/
|
||||
public PolynomialFunction(double c[]) {
|
||||
super();
|
||||
if (c.length < 1) {
|
||||
throw MathRuntimeException.createIllegalArgumentException(LocalizedFormats.EMPTY_POLYNOMIALS_COEFFICIENTS_ARRAY);
|
||||
throw new NotStrictlyPositiveException(LocalizedFormats.EMPTY_POLYNOMIALS_COEFFICIENTS_ARRAY,
|
||||
c.length);
|
||||
}
|
||||
int l = c.length;
|
||||
while ((l > 1) && (c[l - 1] == 0)) {
|
||||
|
@ -117,13 +118,14 @@ public class PolynomialFunction implements DifferentiableUnivariateRealFunction,
|
|||
* @param coefficients the coefficients of the polynomial to evaluate
|
||||
* @param argument the input value
|
||||
* @return the value of the polynomial
|
||||
* @throws IllegalArgumentException if coefficients is empty
|
||||
* @throws NotStrictlyPositiveException if coefficients is empty
|
||||
* @throws NullPointerException if coefficients is null
|
||||
*/
|
||||
protected static double evaluate(double[] coefficients, double argument) {
|
||||
int n = coefficients.length;
|
||||
if (n < 1) {
|
||||
throw MathRuntimeException.createIllegalArgumentException(LocalizedFormats.EMPTY_POLYNOMIALS_COEFFICIENTS_ARRAY);
|
||||
throw new NotStrictlyPositiveException(LocalizedFormats.EMPTY_POLYNOMIALS_COEFFICIENTS_ARRAY,
|
||||
n);
|
||||
}
|
||||
double result = coefficients[n - 1];
|
||||
for (int j = n -2; j >=0; j--) {
|
||||
|
@ -226,13 +228,14 @@ public class PolynomialFunction implements DifferentiableUnivariateRealFunction,
|
|||
*
|
||||
* @param coefficients the coefficients of the polynomial to differentiate
|
||||
* @return the coefficients of the derivative or null if coefficients has length 1.
|
||||
* @throws IllegalArgumentException if coefficients is empty
|
||||
* @throws NotStrictlyPositiveException if coefficients is empty
|
||||
* @throws NullPointerException if coefficients is null
|
||||
*/
|
||||
protected static double[] differentiate(double[] coefficients) {
|
||||
int n = coefficients.length;
|
||||
if (n < 1) {
|
||||
throw MathRuntimeException.createIllegalArgumentException(LocalizedFormats.EMPTY_POLYNOMIALS_COEFFICIENTS_ARRAY);
|
||||
throw new NotStrictlyPositiveException(LocalizedFormats.EMPTY_POLYNOMIALS_COEFFICIENTS_ARRAY,
|
||||
n);
|
||||
}
|
||||
if (n == 1) {
|
||||
return new double[]{0};
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
*/
|
||||
package org.apache.commons.math.exception;
|
||||
|
||||
import org.apache.commons.math.util.LocalizedFormats;
|
||||
import org.apache.commons.math.util.Localizable;
|
||||
|
||||
/**
|
||||
* Exception to be thrown when the argument is negative.
|
||||
|
@ -33,4 +33,14 @@ public class NotPositiveException extends NumberIsTooSmallException {
|
|||
public NotPositiveException(Number value) {
|
||||
super(value, 0, true);
|
||||
}
|
||||
/**
|
||||
* Construct the exception with a specific context.
|
||||
*
|
||||
* @param specific Specific context where the error occurred.
|
||||
* @param value Argument.
|
||||
*/
|
||||
public NotPositiveException(Localizable specific,
|
||||
Number value) {
|
||||
super(specific, value, 0, true);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
*/
|
||||
package org.apache.commons.math.exception;
|
||||
|
||||
import org.apache.commons.math.util.LocalizedFormats;
|
||||
import org.apache.commons.math.util.Localizable;
|
||||
|
||||
/**
|
||||
* Exception to be thrown when the argument is negative.
|
||||
|
@ -33,4 +33,14 @@ public class NotStrictlyPositiveException extends NumberIsTooSmallException {
|
|||
public NotStrictlyPositiveException(Number value) {
|
||||
super(value, 0, false);
|
||||
}
|
||||
/**
|
||||
* Construct the exception with a specific context.
|
||||
*
|
||||
* @param specific Specific context where the error occurred.
|
||||
* @param value Argument.
|
||||
*/
|
||||
public NotStrictlyPositiveException(Localizable specific,
|
||||
Number value) {
|
||||
super(specific, value, 0, false);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
*/
|
||||
package org.apache.commons.math.exception;
|
||||
|
||||
import org.apache.commons.math.util.Localizable;
|
||||
import org.apache.commons.math.util.LocalizedFormats;
|
||||
|
||||
/**
|
||||
|
@ -43,7 +44,21 @@ public class NumberIsTooLargeException extends MathIllegalNumberException {
|
|||
public NumberIsTooLargeException(Number wrong,
|
||||
Number max,
|
||||
boolean boundIsAllowed) {
|
||||
super((boundIsAllowed ?
|
||||
this(null, wrong, max, boundIsAllowed);
|
||||
}
|
||||
/**
|
||||
* Construct the exception with a specific context.
|
||||
*
|
||||
* @param specific Specific contexte pattern .
|
||||
* @param wrong Value that is larger than the maximum.
|
||||
* @param max maximum.
|
||||
*/
|
||||
public NumberIsTooLargeException(Localizable specific,
|
||||
Number wrong,
|
||||
Number max,
|
||||
boolean boundIsAllowed) {
|
||||
super(specific,
|
||||
(boundIsAllowed ?
|
||||
LocalizedFormats.NUMBER_TOO_LARGE :
|
||||
LocalizedFormats.NUMBER_TOO_LARGE_BOUND_EXCLUDED),
|
||||
wrong, max);
|
||||
|
|
|
@ -16,15 +16,14 @@
|
|||
*/
|
||||
package org.apache.commons.math.random;
|
||||
|
||||
import org.apache.commons.math.MathRuntimeException;
|
||||
import org.apache.commons.math.util.LocalizedFormats;
|
||||
import org.apache.commons.math.exception.NotStrictlyPositiveException;
|
||||
|
||||
/**
|
||||
* Abstract class implementing the {@link RandomGenerator} interface.
|
||||
* Default implementations for all methods other than {@link #nextDouble()} and
|
||||
* {@link #setSeed(long)} are provided.
|
||||
* <p>
|
||||
* All data generation methods are based on <code>nextDouble().</code>
|
||||
* All data generation methods are based on {@code code nextDouble()}.
|
||||
* Concrete implementations <strong>must</strong> override
|
||||
* this method and <strong>should</strong> provide better / more
|
||||
* performant implementations of the other methods if the underlying PRNG
|
||||
|
@ -39,7 +38,7 @@ public abstract class AbstractRandomGenerator implements RandomGenerator {
|
|||
* Cached random normal value. The default implementation for
|
||||
* {@link #nextGaussian} generates pairs of values and this field caches the
|
||||
* second value so that the full algorithm is not executed for every
|
||||
* activation. The value <code>Double.NaN</code> signals that there is
|
||||
* activation. The value {@code Double.NaN} signals that there is
|
||||
* no cached value. Use {@link #clear} to clear the cached value.
|
||||
*/
|
||||
private double cachedNormalDeviate = Double.NaN;
|
||||
|
@ -55,7 +54,7 @@ public abstract class AbstractRandomGenerator implements RandomGenerator {
|
|||
/**
|
||||
* Clears the cache used by the default implementation of
|
||||
* {@link #nextGaussian}. Implemementations that do not override the
|
||||
* default implementation of <code>nextGaussian</code> should call this
|
||||
* default implementation of {@code nextGaussian} should call this
|
||||
* method in the implementation of {@link #setSeed(long)}
|
||||
*/
|
||||
public void clear() {
|
||||
|
@ -81,11 +80,11 @@ public abstract class AbstractRandomGenerator implements RandomGenerator {
|
|||
|
||||
/**
|
||||
* Sets the seed of the underyling random number generator using a
|
||||
* <code>long</code> seed. Sequences of values generated starting with the
|
||||
* {@code long} seed. Sequences of values generated starting with the
|
||||
* same seeds should be identical.
|
||||
* <p>
|
||||
* Implementations that do not override the default implementation of
|
||||
* <code>nextGaussian</code> should include a call to {@link #clear} in the
|
||||
* {@code nextGaussian} should include a call to {@link #clear} in the
|
||||
* implementation of this method.</p>
|
||||
*
|
||||
* @param seed the seed value
|
||||
|
@ -120,9 +119,9 @@ public abstract class AbstractRandomGenerator implements RandomGenerator {
|
|||
}
|
||||
|
||||
/**
|
||||
* Returns the next pseudorandom, uniformly distributed <code>int</code>
|
||||
* Returns the next pseudorandom, uniformly distributed {@code int}
|
||||
* value from this random number generator's sequence.
|
||||
* All 2<font size="-1"><sup>32</sup></font> possible <tt>int</tt> values
|
||||
* All 2<font size="-1"><sup>32</sup></font> possible {@code int} values
|
||||
* should be produced with (approximately) equal probability.
|
||||
* <p>
|
||||
* The default implementation provided here returns
|
||||
|
@ -130,7 +129,7 @@ public abstract class AbstractRandomGenerator implements RandomGenerator {
|
|||
* <code>(int) (nextDouble() * Integer.MAX_VALUE)</code>
|
||||
* </pre></p>
|
||||
*
|
||||
* @return the next pseudorandom, uniformly distributed <code>int</code>
|
||||
* @return the next pseudorandom, uniformly distributed {@code int}
|
||||
* value from this random number generator's sequence
|
||||
*/
|
||||
public int nextInt() {
|
||||
|
@ -138,7 +137,7 @@ public abstract class AbstractRandomGenerator implements RandomGenerator {
|
|||
}
|
||||
|
||||
/**
|
||||
* Returns a pseudorandom, uniformly distributed <tt>int</tt> value
|
||||
* Returns a pseudorandom, uniformly distributed {@code int} value
|
||||
* between 0 (inclusive) and the specified value (exclusive), drawn from
|
||||
* this random number generator's sequence.
|
||||
* <p>
|
||||
|
@ -149,23 +148,22 @@ public abstract class AbstractRandomGenerator implements RandomGenerator {
|
|||
*
|
||||
* @param n the bound on the random number to be returned. Must be
|
||||
* positive.
|
||||
* @return a pseudorandom, uniformly distributed <tt>int</tt>
|
||||
* @return a pseudorandom, uniformly distributed {@code int}
|
||||
* value between 0 (inclusive) and n (exclusive).
|
||||
* @throws IllegalArgumentException if n is not positive.
|
||||
* @throws NotStrictlyPositiveException if {@code n <= 0}.
|
||||
*/
|
||||
public int nextInt(int n) {
|
||||
if (n <= 0 ) {
|
||||
throw MathRuntimeException.createIllegalArgumentException(
|
||||
LocalizedFormats.NOT_POSITIVE_UPPER_BOUND, n);
|
||||
throw new NotStrictlyPositiveException(n);
|
||||
}
|
||||
int result = (int) (nextDouble() * n);
|
||||
return result < n ? result : n - 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the next pseudorandom, uniformly distributed <code>long</code>
|
||||
* Returns the next pseudorandom, uniformly distributed {@code long}
|
||||
* value from this random number generator's sequence. All
|
||||
* 2<font size="-1"><sup>64</sup></font> possible <tt>long</tt> values
|
||||
* 2<font size="-1"><sup>64</sup></font> possible {@code long} values
|
||||
* should be produced with (approximately) equal probability.
|
||||
* <p>
|
||||
* The default implementation returns
|
||||
|
@ -173,7 +171,7 @@ public abstract class AbstractRandomGenerator implements RandomGenerator {
|
|||
* <code>(long) (nextDouble() * Long.MAX_VALUE)</code>
|
||||
* </pre></p>
|
||||
*
|
||||
* @return the next pseudorandom, uniformly distributed <code>long</code>
|
||||
* @return the next pseudorandom, uniformly distributed {@code long}
|
||||
*value from this random number generator's sequence
|
||||
*/
|
||||
public long nextLong() {
|
||||
|
@ -182,7 +180,7 @@ public abstract class AbstractRandomGenerator implements RandomGenerator {
|
|||
|
||||
/**
|
||||
* Returns the next pseudorandom, uniformly distributed
|
||||
* <code>boolean</code> value from this random number generator's
|
||||
* {@code boolean} value from this random number generator's
|
||||
* sequence.
|
||||
* <p>
|
||||
* The default implementation returns
|
||||
|
@ -191,7 +189,7 @@ public abstract class AbstractRandomGenerator implements RandomGenerator {
|
|||
* </pre></p>
|
||||
*
|
||||
* @return the next pseudorandom, uniformly distributed
|
||||
* <code>boolean</code> value from this random number generator's
|
||||
* {@code boolean} value from this random number generator's
|
||||
* sequence
|
||||
*/
|
||||
public boolean nextBoolean() {
|
||||
|
@ -199,8 +197,8 @@ public abstract class AbstractRandomGenerator implements RandomGenerator {
|
|||
}
|
||||
|
||||
/**
|
||||
* Returns the next pseudorandom, uniformly distributed <code>float</code>
|
||||
* value between <code>0.0</code> and <code>1.0</code> from this random
|
||||
* Returns the next pseudorandom, uniformly distributed {@code float}
|
||||
* value between {@code 0.0} and {@code 1.0} from this random
|
||||
* number generator's sequence.
|
||||
* <p>
|
||||
* The default implementation returns
|
||||
|
@ -208,8 +206,8 @@ public abstract class AbstractRandomGenerator implements RandomGenerator {
|
|||
* <code>(float) nextDouble() </code>
|
||||
* </pre></p>
|
||||
*
|
||||
* @return the next pseudorandom, uniformly distributed <code>float</code>
|
||||
* value between <code>0.0</code> and <code>1.0</code> from this
|
||||
* @return the next pseudorandom, uniformly distributed {@code float}
|
||||
* value between {@code 0.0} and {@code 1.0} from this
|
||||
* random number generator's sequence
|
||||
*/
|
||||
public float nextFloat() {
|
||||
|
@ -218,22 +216,22 @@ public abstract class AbstractRandomGenerator implements RandomGenerator {
|
|||
|
||||
/**
|
||||
* Returns the next pseudorandom, uniformly distributed
|
||||
* <code>double</code> value between <code>0.0</code> and
|
||||
* <code>1.0</code> from this random number generator's sequence.
|
||||
* {@code double} value between {@code 0.0} and
|
||||
* {@code 1.0} from this random number generator's sequence.
|
||||
* <p>
|
||||
* This method provides the underlying source of random data used by the
|
||||
* other methods.</p>
|
||||
*
|
||||
* @return the next pseudorandom, uniformly distributed
|
||||
* <code>double</code> value between <code>0.0</code> and
|
||||
* <code>1.0</code> from this random number generator's sequence
|
||||
* {@code double} value between {@code 0.0} and
|
||||
* {@code 1.0} from this random number generator's sequence
|
||||
*/
|
||||
public abstract double nextDouble();
|
||||
|
||||
/**
|
||||
* Returns the next pseudorandom, Gaussian ("normally") distributed
|
||||
* <code>double</code> value with mean <code>0.0</code> and standard
|
||||
* deviation <code>1.0</code> from this random number generator's sequence.
|
||||
* {@code double} value with mean {@code 0.0} and standard
|
||||
* deviation {@code 1.0} from this random number generator's sequence.
|
||||
* <p>
|
||||
* The default implementation uses the <em>Polar Method</em>
|
||||
* due to G.E.P. Box, M.E. Muller and G. Marsaglia, as described in
|
||||
|
@ -246,8 +244,8 @@ public abstract class AbstractRandomGenerator implements RandomGenerator {
|
|||
* implementation of {@link #setSeed(long)}.</p>
|
||||
*
|
||||
* @return the next pseudorandom, Gaussian ("normally") distributed
|
||||
* <code>double</code> value with mean <code>0.0</code> and
|
||||
* standard deviation <code>1.0</code> from this random number
|
||||
* {@code double} value with mean {@code 0.0} and
|
||||
* standard deviation {@code 1.0} from this random number
|
||||
* generator's sequence
|
||||
*/
|
||||
public double nextGaussian() {
|
||||
|
|
|
@ -16,8 +16,7 @@
|
|||
*/
|
||||
package org.apache.commons.math.random;
|
||||
|
||||
import org.apache.commons.math.MathRuntimeException;
|
||||
import org.apache.commons.math.util.LocalizedFormats;
|
||||
import org.apache.commons.math.exception.NotStrictlyPositiveException;
|
||||
|
||||
/** Base class for random number generators that generates bits streams.
|
||||
|
||||
|
@ -123,8 +122,7 @@ public abstract class BitsStreamGenerator implements RandomGenerator {
|
|||
public int nextInt(int n) throws IllegalArgumentException {
|
||||
|
||||
if (n < 1) {
|
||||
throw MathRuntimeException.createIllegalArgumentException(
|
||||
LocalizedFormats.NOT_POSITIVE_UPPER_BOUND, n);
|
||||
throw new NotStrictlyPositiveException(n);
|
||||
}
|
||||
|
||||
// find bit mask for n
|
||||
|
|
|
@ -26,6 +26,8 @@ import java.util.Collection;
|
|||
|
||||
import org.apache.commons.math.MathException;
|
||||
import org.apache.commons.math.MathRuntimeException;
|
||||
import org.apache.commons.math.exception.NotStrictlyPositiveException;
|
||||
import org.apache.commons.math.exception.NumberIsTooLargeException;
|
||||
import org.apache.commons.math.distribution.BetaDistributionImpl;
|
||||
import org.apache.commons.math.distribution.BinomialDistributionImpl;
|
||||
import org.apache.commons.math.distribution.CauchyDistributionImpl;
|
||||
|
@ -145,11 +147,11 @@ public class RandomDataImpl implements RandomData, Serializable {
|
|||
* @param len
|
||||
* the desired string length.
|
||||
* @return the random string.
|
||||
* @throws NotStrictlyPositiveException if {@code len <= 0}.
|
||||
*/
|
||||
public String nextHexString(int len) {
|
||||
if (len <= 0) {
|
||||
throw MathRuntimeException.createIllegalArgumentException(
|
||||
LocalizedFormats.NOT_POSITIVE_LENGTH, len);
|
||||
throw new NotStrictlyPositiveException(LocalizedFormats.LENGTH, len);
|
||||
}
|
||||
|
||||
// Get a random number generator
|
||||
|
@ -191,12 +193,12 @@ public class RandomDataImpl implements RandomData, Serializable {
|
|||
* @param upper
|
||||
* the upper bound.
|
||||
* @return the random integer.
|
||||
* @throws NumberIsTooLargeException if {@code lower >= upper}.
|
||||
*/
|
||||
public int nextInt(int lower, int upper) {
|
||||
if (lower >= upper) {
|
||||
throw MathRuntimeException.createIllegalArgumentException(
|
||||
LocalizedFormats.LOWER_BOUND_NOT_BELOW_UPPER_BOUND,
|
||||
upper, lower);
|
||||
throw new NumberIsTooLargeException(LocalizedFormats.LOWER_BOUND_NOT_BELOW_UPPER_BOUND,
|
||||
lower, upper, false);
|
||||
}
|
||||
double r = getRan().nextDouble();
|
||||
return (int) ((r * upper) + ((1.0 - r) * lower) + r);
|
||||
|
@ -211,12 +213,12 @@ public class RandomDataImpl implements RandomData, Serializable {
|
|||
* @param upper
|
||||
* the upper bound.
|
||||
* @return the random integer.
|
||||
* @throws NumberIsTooLargeException if {@code lower >= upper}.
|
||||
*/
|
||||
public long nextLong(long lower, long upper) {
|
||||
if (lower >= upper) {
|
||||
throw MathRuntimeException.createIllegalArgumentException(
|
||||
LocalizedFormats.LOWER_BOUND_NOT_BELOW_UPPER_BOUND,
|
||||
upper, lower);
|
||||
throw new NumberIsTooLargeException(LocalizedFormats.LOWER_BOUND_NOT_BELOW_UPPER_BOUND,
|
||||
lower, upper, false);
|
||||
}
|
||||
double r = getRan().nextDouble();
|
||||
return (long) ((r * upper) + ((1.0 - r) * lower) + r);
|
||||
|
@ -241,11 +243,11 @@ public class RandomDataImpl implements RandomData, Serializable {
|
|||
* @param len
|
||||
* the length of the generated string
|
||||
* @return the random string
|
||||
* @throws NotStrictlyPositiveException if {@code len <= 0}.
|
||||
*/
|
||||
public String nextSecureHexString(int len) {
|
||||
if (len <= 0) {
|
||||
throw MathRuntimeException.createIllegalArgumentException(
|
||||
LocalizedFormats.NOT_POSITIVE_LENGTH, len);
|
||||
throw new NotStrictlyPositiveException(LocalizedFormats.LENGTH, len);
|
||||
}
|
||||
|
||||
// Get SecureRandom and setup Digest provider
|
||||
|
@ -302,12 +304,12 @@ public class RandomDataImpl implements RandomData, Serializable {
|
|||
* @param upper
|
||||
* the upper bound.
|
||||
* @return the random integer.
|
||||
* @throws NumberIsTooLargeException if {@code lower >= upper}.
|
||||
*/
|
||||
public int nextSecureInt(int lower, int upper) {
|
||||
if (lower >= upper) {
|
||||
throw MathRuntimeException.createIllegalArgumentException(
|
||||
LocalizedFormats.LOWER_BOUND_NOT_BELOW_UPPER_BOUND,
|
||||
upper, lower);
|
||||
throw new NumberIsTooLargeException(LocalizedFormats.LOWER_BOUND_NOT_BELOW_UPPER_BOUND,
|
||||
lower, upper, false);
|
||||
}
|
||||
SecureRandom sec = getSecRan();
|
||||
return lower + (int) (sec.nextDouble() * (upper - lower + 1));
|
||||
|
@ -323,12 +325,12 @@ public class RandomDataImpl implements RandomData, Serializable {
|
|||
* @param upper
|
||||
* the upper bound.
|
||||
* @return the random integer.
|
||||
* @throws NumberIsTooLargeException if {@code lower >= upper}.
|
||||
*/
|
||||
public long nextSecureLong(long lower, long upper) {
|
||||
if (lower >= upper) {
|
||||
throw MathRuntimeException.createIllegalArgumentException(
|
||||
LocalizedFormats.LOWER_BOUND_NOT_BELOW_UPPER_BOUND,
|
||||
upper, lower);
|
||||
throw new NumberIsTooLargeException(LocalizedFormats.LOWER_BOUND_NOT_BELOW_UPPER_BOUND,
|
||||
lower, upper, false);
|
||||
}
|
||||
SecureRandom sec = getSecRan();
|
||||
return lower + (long) (sec.nextDouble() * (upper - lower + 1));
|
||||
|
@ -349,11 +351,11 @@ public class RandomDataImpl implements RandomData, Serializable {
|
|||
*
|
||||
* @param mean mean of the Poisson distribution.
|
||||
* @return the random Poisson value.
|
||||
* @throws NotStrictlyPositiveException if {@code mean <= 0}.
|
||||
*/
|
||||
public long nextPoisson(double mean) {
|
||||
if (mean <= 0) {
|
||||
throw MathRuntimeException.createIllegalArgumentException(
|
||||
LocalizedFormats.NOT_POSITIVE_POISSON_MEAN, mean);
|
||||
throw new NotStrictlyPositiveException(LocalizedFormats.MEAN, mean);
|
||||
}
|
||||
|
||||
final RandomGenerator generator = getRan();
|
||||
|
@ -453,11 +455,11 @@ public class RandomDataImpl implements RandomData, Serializable {
|
|||
* @param sigma
|
||||
* the standard deviation of the distribution
|
||||
* @return the random Normal value
|
||||
* @throws NotStrictlyPositiveException if {@code sigma <= 0}.
|
||||
*/
|
||||
public double nextGaussian(double mu, double sigma) {
|
||||
if (sigma <= 0) {
|
||||
throw MathRuntimeException.createIllegalArgumentException(
|
||||
LocalizedFormats.NOT_POSITIVE_STANDARD_DEVIATION, sigma);
|
||||
throw new NotStrictlyPositiveException(LocalizedFormats.STANDARD_DEVIATION, sigma);
|
||||
}
|
||||
return sigma * getRan().nextGaussian() + mu;
|
||||
}
|
||||
|
@ -474,11 +476,11 @@ public class RandomDataImpl implements RandomData, Serializable {
|
|||
*
|
||||
* @param mean the mean of the distribution
|
||||
* @return the random Exponential value
|
||||
* @throws NotStrictlyPositiveException if {@code mean <= 0}.
|
||||
*/
|
||||
public double nextExponential(double mean) {
|
||||
if (mean <= 0.0) {
|
||||
throw MathRuntimeException.createIllegalArgumentException(
|
||||
LocalizedFormats.NOT_POSITIVE_MEAN, mean);
|
||||
throw new NotStrictlyPositiveException(LocalizedFormats.MEAN, mean);
|
||||
}
|
||||
final RandomGenerator generator = getRan();
|
||||
double unif = generator.nextDouble();
|
||||
|
@ -503,12 +505,12 @@ public class RandomDataImpl implements RandomData, Serializable {
|
|||
* the upper bound.
|
||||
* @return a uniformly distributed random value from the interval (lower,
|
||||
* upper)
|
||||
* @throws NumberIsTooLargeException if {@code lower >= upper}.
|
||||
*/
|
||||
public double nextUniform(double lower, double upper) {
|
||||
if (lower >= upper) {
|
||||
throw MathRuntimeException.createIllegalArgumentException(
|
||||
LocalizedFormats.LOWER_BOUND_NOT_BELOW_UPPER_BOUND,
|
||||
upper, lower);
|
||||
throw new NumberIsTooLargeException(LocalizedFormats.LOWER_BOUND_NOT_BELOW_UPPER_BOUND,
|
||||
lower, upper, false);
|
||||
}
|
||||
final RandomGenerator generator = getRan();
|
||||
|
||||
|
@ -827,15 +829,17 @@ public class RandomDataImpl implements RandomData, Serializable {
|
|||
* @param k
|
||||
* size of the permutation (must satisfy 0 < k <= n).
|
||||
* @return the random permutation as an int array
|
||||
* @throws NumberIsTooLargException if {@code k > n}.
|
||||
* @throws NotStrictlyPositiveException if {@code k <= 0}.
|
||||
*/
|
||||
public int[] nextPermutation(int n, int k) {
|
||||
if (k > n) {
|
||||
throw MathRuntimeException.createIllegalArgumentException(
|
||||
LocalizedFormats.PERMUTATION_EXCEEDS_N, k, n);
|
||||
throw new NumberIsTooLargeException(LocalizedFormats.PERMUTATION_EXCEEDS_N,
|
||||
k, n, true);
|
||||
}
|
||||
if (k == 0) {
|
||||
throw MathRuntimeException.createIllegalArgumentException(
|
||||
LocalizedFormats.NOT_POSITIVE_PERMUTATION, k);
|
||||
throw new NotStrictlyPositiveException(LocalizedFormats.PERMUTATION_SIZE,
|
||||
k);
|
||||
}
|
||||
|
||||
int[] index = getNatural(n);
|
||||
|
@ -863,16 +867,17 @@ public class RandomDataImpl implements RandomData, Serializable {
|
|||
* @param k
|
||||
* sample size.
|
||||
* @return the random sample.
|
||||
* @throws NumberIsTooLargeException if {@code k > c.size()}.
|
||||
* @throws NotStrictlyPositiveException if {@code k <= 0}.
|
||||
*/
|
||||
public Object[] nextSample(Collection<?> c, int k) {
|
||||
int len = c.size();
|
||||
if (k > len) {
|
||||
throw MathRuntimeException.createIllegalArgumentException(
|
||||
LocalizedFormats.SAMPLE_SIZE_EXCEEDS_COLLECTION_SIZE);
|
||||
throw new NumberIsTooLargeException(LocalizedFormats.SAMPLE_SIZE_EXCEEDS_COLLECTION_SIZE,
|
||||
k, len, true);
|
||||
}
|
||||
if (k <= 0) {
|
||||
throw MathRuntimeException.createIllegalArgumentException(
|
||||
LocalizedFormats.NOT_POSITIVE_SAMPLE_SIZE, k);
|
||||
throw new NotStrictlyPositiveException(LocalizedFormats.NUMBER_OF_SAMPLES, k);
|
||||
}
|
||||
|
||||
Object[] objects = c.toArray();
|
||||
|
|
|
@ -19,8 +19,7 @@ package org.apache.commons.math.random;
|
|||
|
||||
import java.util.Arrays;
|
||||
|
||||
import org.apache.commons.math.MathRuntimeException;
|
||||
import org.apache.commons.math.util.LocalizedFormats;
|
||||
import org.apache.commons.math.exception.DimensionMismatchException;
|
||||
|
||||
/**
|
||||
* A {@link RandomVectorGenerator} that generates vectors with uncorrelated
|
||||
|
@ -55,9 +54,7 @@ public class UncorrelatedRandomVectorGenerator
|
|||
double[] standardDeviation,
|
||||
NormalizedRandomGenerator generator) {
|
||||
if (mean.length != standardDeviation.length) {
|
||||
throw MathRuntimeException.createIllegalArgumentException(
|
||||
LocalizedFormats.DIMENSIONS_MISMATCH_SIMPLE,
|
||||
mean.length, standardDeviation.length);
|
||||
throw new DimensionMismatchException(mean.length, standardDeviation.length);
|
||||
}
|
||||
this.mean = mean.clone();
|
||||
this.standardDeviation = standardDeviation.clone();
|
||||
|
|
|
@ -84,7 +84,7 @@ public enum LocalizedFormats implements Localizable {
|
|||
DISCRETE_CUMULATIVE_PROBABILITY_RETURNED_NAN("Discrete cumulative probability function returned NaN for argument {0}"),
|
||||
DISTRIBUTION_NOT_LOADED("distribution not loaded"),
|
||||
DUPLICATED_ABSCISSA("Abscissa {0} is duplicated at both indices {1} and {2}"),
|
||||
EMPTY_POLYNOMIALS_COEFFICIENTS_ARRAY("empty polynomials coefficients array"),
|
||||
EMPTY_POLYNOMIALS_COEFFICIENTS_ARRAY("empty polynomials coefficients array"), /* keep */
|
||||
EMPTY_SELECTED_COLUMN_INDEX_ARRAY("empty selected column index array"),
|
||||
EMPTY_SELECTED_ROW_INDEX_ARRAY("empty selected row index array"),
|
||||
EMPTY_STRING_FOR_IMAGINARY_CHARACTER("empty string for imaginary character"),
|
||||
|
@ -131,7 +131,7 @@ public enum LocalizedFormats implements Localizable {
|
|||
LCM_OVERFLOW_32_BITS("overflow: lcm({0}, {1}) is 2^31"),
|
||||
LCM_OVERFLOW_64_BITS("overflow: lcm({0}, {1}) is 2^63"),
|
||||
LOESS_EXPECTS_AT_LEAST_ONE_POINT("Loess expects at least 1 point"),
|
||||
LOWER_BOUND_NOT_BELOW_UPPER_BOUND("upper bound ({0}) must be greater than lower bound ({1})"),
|
||||
LOWER_BOUND_NOT_BELOW_UPPER_BOUND("lower bound ({0}) must be strictly less than upper bound ({1})"), /* keep */
|
||||
LOWER_ENDPOINT_ABOVE_UPPER_ENDPOINT("lower endpoint ({0}) must be less than or equal to upper endpoint ({1})"),
|
||||
MAP_MODIFIED_WHILE_ITERATING("map has been modified while iterating"),
|
||||
MAX_EVALUATIONS_EXCEEDED("maximal number of evaluations ({0}) exceeded"),
|
||||
|
@ -174,9 +174,13 @@ public enum LocalizedFormats implements Localizable {
|
|||
NOT_POSITIVE_ELEMENT_AT_INDEX("element {0} is not positive: {1}"),
|
||||
NOT_POSITIVE_EXPONENT("invalid exponent {0} (must be positive)"),
|
||||
NOT_POSITIVE_LENGTH("length must be positive ({0})"),
|
||||
LENGTH("length ({0})"), /* keep */
|
||||
NOT_POSITIVE_MEAN("mean must be positive ({0})"),
|
||||
MEAN("mean ({0})"), /* keep */
|
||||
NOT_POSITIVE_NUMBER_OF_SAMPLES("number of sample is not positive: {0}"),
|
||||
NUMBER_OF_SAMPLES("number of samples ({0})"), /* keep */
|
||||
NOT_POSITIVE_PERMUTATION("permutation k ({0}) must be positive"),
|
||||
PERMUTATION_SIZE("permutation size ({0}"), /* keep */
|
||||
NOT_POSITIVE_POISSON_MEAN("the Poisson mean must be positive ({0})"),
|
||||
NOT_POSITIVE_POPULATION_SIZE("population size must be positive ({0})"),
|
||||
NOT_POSITIVE_ROW_DIMENSION("invalid row dimension: {0} (must be positive)"),
|
||||
|
@ -184,6 +188,7 @@ public enum LocalizedFormats implements Localizable {
|
|||
NOT_POSITIVE_SCALE("scale must be positive ({0})"),
|
||||
NOT_POSITIVE_SHAPE("shape must be positive ({0})"),
|
||||
NOT_POSITIVE_STANDARD_DEVIATION("standard deviation must be positive ({0})"),
|
||||
STANDARD_DEVIATION("standard deviation ({0})"), /* keep */
|
||||
NOT_POSITIVE_UPPER_BOUND("upper bound must be positive ({0})"),
|
||||
NOT_POSITIVE_WINDOW_SIZE("window size must be positive ({0})"),
|
||||
NOT_POWER_OF_TWO("{0} is not a power of 2"),
|
||||
|
@ -234,7 +239,7 @@ public enum LocalizedFormats implements Localizable {
|
|||
OVERFLOW_IN_FRACTION("overflow in fraction {0}/{1}, cannot negate"),
|
||||
PERCENTILE_IMPLEMENTATION_CANNOT_ACCESS_METHOD("cannot access {0} method in percentile implementation {1}"),
|
||||
PERCENTILE_IMPLEMENTATION_UNSUPPORTED_METHOD("percentile implementation {0} does not support {1}"),
|
||||
PERMUTATION_EXCEEDS_N("permutation k ({0}) exceeds n ({1})"),
|
||||
PERMUTATION_EXCEEDS_N("permutation size ({0}) exceeds permuation domain ({1})"), /* keep */
|
||||
POLYNOMIAL_INTERPOLANTS_MISMATCH_SEGMENTS("number of polynomial interpolants must match the number of segments ({0} != {1} - 1)"),
|
||||
POSITION_SIZE_MISMATCH_INPUT_ARRAY("position {0} and size {1} don't fit to the size of the input array {2}"),
|
||||
POWER_NEGATIVE_PARAMETERS("cannot raise an integral value to a negative power ({0}^{1})"),
|
||||
|
@ -244,7 +249,7 @@ public enum LocalizedFormats implements Localizable {
|
|||
ROTATION_MATRIX_DIMENSIONS("a {0}x{1} matrix cannot be a rotation matrix"),
|
||||
ROW_INDEX_OUT_OF_RANGE("row index {0} out of allowed range [{1}, {2}]"),
|
||||
SAME_SIGN_AT_ENDPOINTS("function values at endpoints do not have different signs, endpoints: [{0}, {1}], values: [{2}, {3}]"),
|
||||
SAMPLE_SIZE_EXCEEDS_COLLECTION_SIZE("sample size ({0}) exceeds collection size ({1})"),
|
||||
SAMPLE_SIZE_EXCEEDS_COLLECTION_SIZE("sample size ({0}) exceeds collection size ({1})"), /* keep */
|
||||
SAMPLE_SIZE_LARGER_THAN_POPULATION_SIZE("sample size ({0}) must be less than or equal to population size ({1})"),
|
||||
SIMPLEX_NEED_ONE_POINT("simplex must contain at least one point"),
|
||||
SIMPLE_MESSAGE("{0}"),
|
||||
|
|
|
@ -103,7 +103,7 @@ ITERATOR_EXHAUSTED = it\u00e9ration achev\u00e9e
|
|||
LCM_OVERFLOW_32_BITS = d\u00e9passement de capacit\u00e9 : le MCM de {0} et {1} vaut 2^31
|
||||
LCM_OVERFLOW_64_BITS = d\u00e9passement de capacit\u00e9 : le MCM de {0} et {1} vaut 2^63
|
||||
LOESS_EXPECTS_AT_LEAST_ONE_POINT = la r\u00e9gression Loess n\u00e9cessite au moins un point
|
||||
LOWER_BOUND_NOT_BELOW_UPPER_BOUND = la borne sup\u00e9rieure ({0}) doit \u00eatre sup\u00e9rieure
|
||||
LOWER_BOUND_NOT_BELOW_UPPER_BOUND = la borne inf\u00e9rieure ({0}) doit \u00eatre strictement plus petite que la borne sup\u00e9rieure ({1})
|
||||
LOWER_ENDPOINT_ABOVE_UPPER_ENDPOINT = la borne inf\u00e9rieure ({0}) devrait \u00eatre inf\u00e9rieure
|
||||
MAP_MODIFIED_WHILE_ITERATING = la table d''adressage a \u00e9t\u00e9 modifi\u00e9e pendant l''it\u00e9ration
|
||||
MAX_EVALUATIONS_EXCEEDED = nombre maximal d''\u00e9valuations ({0}) d\u00e9pass\u00e9
|
||||
|
@ -146,9 +146,13 @@ NOT_POSITIVE_DEGREES_OF_FREEDOM = les degr\u00e9s de libert\u00e9 doivent \u00ea
|
|||
NOT_POSITIVE_ELEMENT_AT_INDEX = l''\u00e9l\u00e9ment {0} n''est pas positif : {1}
|
||||
NOT_POSITIVE_EXPONENT = exposant {0} invalide (doit \u00eatre positif)
|
||||
NOT_POSITIVE_LENGTH = la longueur doit \u00eatre positive ({0})
|
||||
LENGTH = longueur ({0})
|
||||
NOT_POSITIVE_MEAN = la moyenne doit \u00eatre positive ({0})
|
||||
MEAN = moyenne ({0})
|
||||
NOT_POSITIVE_NUMBER_OF_SAMPLES = le nombre d''\u00e9chantillons n''est pas positif : {0}
|
||||
NUMBER_OF_SAMPLES = nombre d''\u00e9chantillons ({0})
|
||||
NOT_POSITIVE_PERMUTATION = la permutation k ({0}) doit \u00eatre positive
|
||||
PERMUTATION_SIZE = taille de la permutation
|
||||
NOT_POSITIVE_POISSON_MEAN = la moyenne de Poisson doit \u00eatre positive ({0})
|
||||
NOT_POSITIVE_POPULATION_SIZE = la taille de la population doit \u00eatre positive ({0})
|
||||
NOT_POSITIVE_ROW_DIMENSION = nombre de lignes invalide : {0} (doit \u00eatre positif)
|
||||
|
@ -156,6 +160,7 @@ NOT_POSITIVE_SAMPLE_SIZE = la taille de l''\u00e9chantillon doit \u00eatre posit
|
|||
NOT_POSITIVE_SCALE = l''\u00e9chelle doit \u00eatre positive ({0})
|
||||
NOT_POSITIVE_SHAPE = le facteur de forme doit \u00eatre positif ({0})
|
||||
NOT_POSITIVE_STANDARD_DEVIATION = l''\u00e9cart type doit \u00eatre positif ({0})
|
||||
STANDARD_DEVIATION = \u00e9cart type
|
||||
NOT_POSITIVE_UPPER_BOUND = la borne sup\u00e9rieure doit \u00eatre positive ({0})
|
||||
NOT_POSITIVE_WINDOW_SIZE = la taille de la fen\u00eatre doit \u00eatre positive ({0})
|
||||
NOT_POWER_OF_TWO = {0} n''est pas une puissance de 2
|
||||
|
@ -206,7 +211,7 @@ OUT_OF_RANGE_SIMPLE = {0} hors du domaine [{1}, {2}]
|
|||
OVERFLOW_IN_FRACTION = d\u00e9passement de capacit\u00e9 pour la fraction {0}/{1}, son signe ne peut \u00eatre chang\u00e9
|
||||
PERCENTILE_IMPLEMENTATION_CANNOT_ACCESS_METHOD = acc\u00e8s impossible \u00e0 la m\u00e9thode {0}
|
||||
PERCENTILE_IMPLEMENTATION_UNSUPPORTED_METHOD = l''implantation de pourcentage {0} ne dispose pas de la m\u00e9thode {1}
|
||||
PERMUTATION_EXCEEDS_N = la permutation k ({0}) d\u00e9passe n ({1})
|
||||
PERMUTATION_EXCEEDS_N = la taille de la permutation ({0}) d\u00e9passe le domaine de la permutation ({1})
|
||||
POLYNOMIAL_INTERPOLANTS_MISMATCH_SEGMENTS = le nombre d''interpolants polyn\u00f4miaux doit correspondre au nombre de segments ({0} != {1} - 1)
|
||||
POSITION_SIZE_MISMATCH_INPUT_ARRAY = la position {0} et la taille {1} sont incompatibles avec la taille du tableau d''entr\u00e9e {2}
|
||||
POWER_NEGATIVE_PARAMETERS = impossible d''\u00e9lever une valeur enti\u00e8re
|
||||
|
|
Loading…
Reference in New Issue