本文整理汇总了Java中org.apache.commons.math3.distribution.UniformRealDistribution.sample方法的典型用法代码示例。如果您正苦于以下问题:Java UniformRealDistribution.sample方法的具体用法?Java UniformRealDistribution.sample怎么用?Java UniformRealDistribution.sample使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.apache.commons.math3.distribution.UniformRealDistribution
的用法示例。
在下文中一共展示了UniformRealDistribution.sample方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: BM
import org.apache.commons.math3.distribution.UniformRealDistribution; //导入方法依赖的package包/类
public BM(int numClusters, int dimension, long randomSeed) {
this.numClusters = numClusters;
this.dimension = dimension;
this.distributions = new BernoulliDistribution[numClusters][dimension];
this.mixtureCoefficients = new double[numClusters];
Arrays.fill(mixtureCoefficients,1.0/numClusters);
this.logMixtureCoefficients = new double[numClusters];
Arrays.fill(logMixtureCoefficients,Math.log(1.0/numClusters));
Random random = new Random(randomSeed);
RandomGenerator randomGenerator = RandomGeneratorFactory.createRandomGenerator(random);
UniformRealDistribution uniform = new UniformRealDistribution(randomGenerator, 0.25,0.75);
for (int k=0;k<numClusters;k++){
for (int d=0;d<dimension;d++){
double p = uniform.sample();
distributions[k][d] = new BernoulliDistribution(p);
}
}
this.logClusterConditioinalForEmpty = new double[numClusters];
updateLogClusterConditioinalForEmpty();
this.names = new ArrayList<>(dimension);
for (int d=0;d<dimension;d++){
names.add(""+d);
}
}
示例2: GaussianRandomFeatures
import org.apache.commons.math3.distribution.UniformRealDistribution; //导入方法依赖的package包/类
public GaussianRandomFeatures(int D, int n, double gammak, boolean sine) {
_D = D;
_n = n;
_gammak = gammak;
_sine = sine;
// Initialize mnd
// The value for the variances are taken from: http://www.eecs.berkeley.edu/~brecht/papers/07.rah.rec.nips.pdf
_cov = new double[_n][_n];
_mu = new double[_n];
for(int i = 0; i < _n; i++) {
_mu[i] = 0;
for(int j = 0; j < _n; j++)
_cov[i][j] = (i == j) ? 2*_gammak : 0;
}
_mnd = new MultivariateNormalDistribution(_mu, _cov);
_ws = new double[_D][];
for (int i = 0; i < _D; i ++)
_ws[i] = _mnd.sample();
// Initialize urd
_lb = 0;
_ub = 2*Math.PI;
_urd = new UniformRealDistribution (_lb, _ub);
_bs = new double[_D];
for (int i = 0; i < _D; i ++)
_bs[i] = _urd.sample();
}
示例3: getUnivariateGaussianTargetsWithDropout
import org.apache.commons.math3.distribution.UniformRealDistribution; //导入方法依赖的package包/类
private Object[][] getUnivariateGaussianTargetsWithDropout(final double sigma, final double dropoutRate) {
Random rng = new Random(337);
final RandomGenerator randomGenerator = RandomGeneratorFactory.createRandomGenerator(rng);
NormalDistribution n = new NormalDistribution(randomGenerator, 1, sigma);
final int numDataPoints = 10000;
final int numEventPoints = 2000;
// Randomly select dropoutRate of targets and reduce by 25%-75% (uniformly distributed)
UniformRealDistribution uniformRealDistribution = new UniformRealDistribution(randomGenerator, 0, 1.0);
final List<ReadCountRecord.SingleSampleRecord> targetList = new ArrayList<>();
for (int i = 0; i < numDataPoints; i++){
double coverage = n.sample() + (i < (numDataPoints - numEventPoints) ? 0.0 : 0.5);
if (uniformRealDistribution.sample() < dropoutRate) {
double multiplier = .25 + uniformRealDistribution.sample()/2;
coverage = coverage * multiplier;
}
targetList.add(new ReadCountRecord.SingleSampleRecord(new Target("arbitrary_name", new SimpleInterval("chr1", 100 + 2*i, 101 + 2 * i)), coverage));
}
HashedListTargetCollection<ReadCountRecord.SingleSampleRecord> targets = new HashedListTargetCollection<>(targetList);
List<ModeledSegment> segments = new ArrayList<>();
segments.add(new ModeledSegment(new SimpleInterval("chr1", 100, 16050), 8000, 1));
segments.add(new ModeledSegment(new SimpleInterval("chr1", 16100, 20200), 2000, 1.5));
return new Object [] []{ {targets, segments}};
}
示例4: testInterpolation1
import org.apache.commons.math3.distribution.UniformRealDistribution; //导入方法依赖的package包/类
/**
* Interpolating a plane.
* <p>
* z = 2 x - 3 y + 5
*/
@Test
public void testInterpolation1() {
final int sz = 21;
double[] xval = new double[sz];
double[] yval = new double[sz];
// Coordinate values
final double delta = 1d / (sz - 1);
for (int i = 0; i < sz; i++) {
xval[i] = -1 + 15 * i * delta;
yval[i] = -20 + 30 * i * delta;
}
// Function values
BivariateFunction f = new BivariateFunction() {
public double value(double x, double y) {
return 2 * x - 3 * y + 5;
}
};
double[][] zval = new double[xval.length][yval.length];
for (int i = 0; i < xval.length; i++) {
for (int j = 0; j < yval.length; j++) {
zval[i][j] = f.value(xval[i], yval[j]);
}
}
BivariateGridInterpolator interpolator = new BicubicSplineInterpolator();
BivariateFunction p = interpolator.interpolate(xval, yval, zval);
double x, y;
final RandomGenerator rng = new Well19937c(1234567L); // "tol" depends on the seed.
final UniformRealDistribution distX
= new UniformRealDistribution(rng, xval[0], xval[xval.length - 1]);
final UniformRealDistribution distY
= new UniformRealDistribution(rng, yval[0], yval[yval.length - 1]);
final int numSamples = 50;
final double tol = 6;
for (int i = 0; i < numSamples; i++) {
x = distX.sample();
for (int j = 0; j < numSamples; j++) {
y = distY.sample();
// System.out.println(x + " " + y + " " + f.value(x, y) + " " + p.value(x, y));
Assert.assertEquals(f.value(x, y), p.value(x, y), tol);
}
// System.out.println();
}
}
示例5: testInterpolation2
import org.apache.commons.math3.distribution.UniformRealDistribution; //导入方法依赖的package包/类
/**
* Interpolating a paraboloid.
* <p>
* z = 2 x<sup>2</sup> - 3 y<sup>2</sup> + 4 x y - 5
*/
@Test
public void testInterpolation2() {
final int sz = 21;
double[] xval = new double[sz];
double[] yval = new double[sz];
// Coordinate values
final double delta = 1d / (sz - 1);
for (int i = 0; i < sz; i++) {
xval[i] = -1 + 15 * i * delta;
yval[i] = -20 + 30 * i * delta;
}
// Function values
BivariateFunction f = new BivariateFunction() {
public double value(double x, double y) {
return 2 * x * x - 3 * y * y + 4 * x * y - 5;
}
};
double[][] zval = new double[xval.length][yval.length];
for (int i = 0; i < xval.length; i++) {
for (int j = 0; j < yval.length; j++) {
zval[i][j] = f.value(xval[i], yval[j]);
}
}
BivariateGridInterpolator interpolator = new BicubicSplineInterpolator();
BivariateFunction p = interpolator.interpolate(xval, yval, zval);
double x, y;
final RandomGenerator rng = new Well19937c(1234567L); // "tol" depends on the seed.
final UniformRealDistribution distX
= new UniformRealDistribution(rng, xval[0], xval[xval.length - 1]);
final UniformRealDistribution distY
= new UniformRealDistribution(rng, yval[0], yval[yval.length - 1]);
final int numSamples = 50;
final double tol = 251;
for (int i = 0; i < numSamples; i++) {
x = distX.sample();
for (int j = 0; j < numSamples; j++) {
y = distY.sample();
// System.out.println(x + " " + y + " " + f.value(x, y) + " " + p.value(x, y));
Assert.assertEquals(f.value(x, y), p.value(x, y), tol);
}
// System.out.println();
}
}
示例6: testInterpolation
import org.apache.commons.math3.distribution.UniformRealDistribution; //导入方法依赖的package包/类
private void testInterpolation( double minimumX, double maximumX, int numberOfElements, int numberOfSamples,
UnivariateFunction f, double tolerance, double maxTolerance )
{
double expected;
double actual;
double currentX;
final double delta = ( maximumX - minimumX ) / ( (double) numberOfElements );
double xValues[] = new double[numberOfElements];
double yValues[] = new double[numberOfElements];
for ( int i = 0; i < numberOfElements; i++ )
{
xValues[i] = minimumX + delta * (double) i;
yValues[i] = f.value( xValues[i] );
}
UnivariateFunction interpolation = new AkimaSplineInterpolator().interpolate( xValues, yValues );
for ( int i = 0; i < numberOfElements; i++ )
{
currentX = xValues[i];
expected = f.value( currentX );
actual = interpolation.value( currentX );
assertTrue( Precision.equals( expected, actual ) );
}
final RandomGenerator rng = new Well19937c( 1234567L ); // "tol" depends on the seed.
final UniformRealDistribution distX =
new UniformRealDistribution( rng, xValues[0], xValues[xValues.length - 1] );
double sumError = 0;
for ( int i = 0; i < numberOfSamples; i++ )
{
currentX = distX.sample();
expected = f.value( currentX );
actual = interpolation.value( currentX );
sumError += FastMath.abs( actual - expected );
assertEquals( expected, actual, maxTolerance );
}
assertEquals( 0.0, ( sumError / (double) numberOfSamples ), tolerance );
}
示例7: testInterpolation1
import org.apache.commons.math3.distribution.UniformRealDistribution; //导入方法依赖的package包/类
/**
* Interpolating a plane.
* <p>
* z = 2 x - 3 y + 5
*/
@Test
public void testInterpolation1() {
final int sz = 21;
double[] xval = new double[sz];
double[] yval = new double[sz];
// Coordinate values
final double delta = 1d / (sz - 1);
for (int i = 0; i < sz; i++) {
xval[i] = -1 + 15 * i * delta;
yval[i] = -20 + 30 * i * delta;
}
// Function values
BivariateFunction f = new BivariateFunction() {
public double value(double x, double y) {
return 2 * x - 3 * y + 5;
}
};
double[][] zval = new double[xval.length][yval.length];
for (int i = 0; i < xval.length; i++) {
for (int j = 0; j < yval.length; j++) {
zval[i][j] = f.value(xval[i], yval[j]);
}
}
// Partial derivatives with respect to x
double[][] dZdX = new double[xval.length][yval.length];
for (int i = 0; i < xval.length; i++) {
for (int j = 0; j < yval.length; j++) {
dZdX[i][j] = 2;
}
}
// Partial derivatives with respect to y
double[][] dZdY = new double[xval.length][yval.length];
for (int i = 0; i < xval.length; i++) {
for (int j = 0; j < yval.length; j++) {
dZdY[i][j] = -3;
}
}
// Partial cross-derivatives
double[][] dZdXdY = new double[xval.length][yval.length];
for (int i = 0; i < xval.length; i++) {
for (int j = 0; j < yval.length; j++) {
dZdXdY[i][j] = 0;
}
}
final BivariateFunction bcf
= new BicubicSplineInterpolatingFunction(xval, yval, zval,
dZdX, dZdY, dZdXdY);
double x, y;
final RandomGenerator rng = new Well19937c(1234567L); // "tol" depends on the seed.
final UniformRealDistribution distX
= new UniformRealDistribution(rng, xval[0], xval[xval.length - 1]);
final UniformRealDistribution distY
= new UniformRealDistribution(rng, yval[0], yval[yval.length - 1]);
final int numSamples = 50;
final double tol = 6;
for (int i = 0; i < numSamples; i++) {
x = distX.sample();
for (int j = 0; j < numSamples; j++) {
y = distY.sample();
// System.out.println(x + " " + y + " " + f.value(x, y) + " " + bcf.value(x, y));
Assert.assertEquals(f.value(x, y), bcf.value(x, y), tol);
}
// System.out.println();
}
}
示例8: testInterpolation
import org.apache.commons.math3.distribution.UniformRealDistribution; //导入方法依赖的package包/类
/**
* @param minimumX Lower bound of interpolation range along the x-coordinate.
* @param maximumX Higher bound of interpolation range along the x-coordinate.
* @param minimumY Lower bound of interpolation range along the y-coordinate.
* @param maximumY Higher bound of interpolation range along the y-coordinate.
* @param numberOfElements Number of data points (along each dimension).
* @param numberOfSamples Number of test points.
* @param f Function to test.
* @param meanTolerance Allowed average error (mean error on all interpolated values).
* @param maxTolerance Allowed error on each interpolated value.
*/
private void testInterpolation(double minimumX,
double maximumX,
double minimumY,
double maximumY,
int numberOfElements,
int numberOfSamples,
BivariateFunction f,
double meanTolerance,
double maxTolerance) {
double expected;
double actual;
double currentX;
double currentY;
final double deltaX = (maximumX - minimumX) / ((double) numberOfElements);
final double deltaY = (maximumY - minimumY) / ((double) numberOfElements);
final double[] xValues = new double[numberOfElements];
final double[] yValues = new double[numberOfElements];
final double[][] zValues = new double[numberOfElements][numberOfElements];
for (int i = 0; i < numberOfElements; i++) {
xValues[i] = minimumX + deltaX * (double) i;
for (int j = 0; j < numberOfElements; j++) {
yValues[j] = minimumY + deltaY * (double) j;
zValues[i][j] = f.value(xValues[i], yValues[j]);
}
}
final BivariateFunction interpolation
= new PiecewiseBicubicSplineInterpolatingFunction(xValues,
yValues,
zValues);
for (int i = 0; i < numberOfElements; i++) {
currentX = xValues[i];
for (int j = 0; j < numberOfElements; j++) {
currentY = yValues[j];
expected = f.value(currentX, currentY);
actual = interpolation.value(currentX, currentY);
Assert.assertTrue(Precision.equals(expected, actual));
}
}
final RandomGenerator rng = new Well19937c(1234567L);
final UniformRealDistribution distX = new UniformRealDistribution(rng, xValues[0], xValues[xValues.length - 1]);
final UniformRealDistribution distY = new UniformRealDistribution(rng, yValues[0], yValues[yValues.length - 1]);
double sumError = 0;
for (int i = 0; i < numberOfSamples; i++) {
currentX = distX.sample();
currentY = distY.sample();
expected = f.value(currentX, currentY);
actual = interpolation.value(currentX, currentY);
sumError += FastMath.abs(actual - expected);
Assert.assertEquals(expected, actual, maxTolerance);
}
final double meanError = sumError / numberOfSamples;
Assert.assertEquals(0, meanError, meanTolerance);
}
示例9: testInterpolation
import org.apache.commons.math3.distribution.UniformRealDistribution; //导入方法依赖的package包/类
/**
* @param numSamples Number of test samples.
* @param tolerance Allowed tolerance on the interpolated value.
* @param f Test function.
* @param print Whether to print debugging output to the console.
*/
private void testInterpolation(int numSamples,
double tolerance,
BivariateFunction f,
boolean print) {
final int sz = 21;
final double[] xval = new double[sz];
final double[] yval = new double[sz];
// Coordinate values
final double delta = 1d / (sz - 1);
for (int i = 0; i < sz; i++) {
xval[i] = -1 + 15 * i * delta;
yval[i] = -20 + 30 * i * delta;
}
final double[][] zval = new double[xval.length][yval.length];
for (int i = 0; i < xval.length; i++) {
for (int j = 0; j < yval.length; j++) {
zval[i][j] = f.value(xval[i], yval[j]);
}
}
final BicubicInterpolator interpolator = new BicubicInterpolator();
final BicubicInterpolatingFunction p = interpolator.interpolate(xval, yval, zval);
double x, y;
final RandomGenerator rng = new Well19937c();
final UniformRealDistribution distX = new UniformRealDistribution(rng, xval[0], xval[xval.length - 1]);
final UniformRealDistribution distY = new UniformRealDistribution(rng, yval[0], yval[yval.length - 1]);
int count = 0;
while (true) {
x = distX.sample();
y = distY.sample();
if (!p.isValidPoint(x, y)) {
if (print) {
System.out.println("# " + x + " " + y);
}
continue;
}
if (count++ > numSamples) {
break;
}
final double expected = f.value(x, y);
final double actual = p.value(x, y);
if (print) {
System.out.println(x + " " + y + " " + expected + " " + actual);
}
Assert.assertEquals(expected, actual, tolerance);
}
}
示例10: testInterpolation1
import org.apache.commons.math3.distribution.UniformRealDistribution; //导入方法依赖的package包/类
/**
* Interpolating a plane.
* <p>
* z = 2 x - 3 y + 5
*/
@Test
public void testInterpolation1() {
final int sz = 21;
double[] xval = new double[sz];
double[] yval = new double[sz];
// Coordinate values
final double delta = 1d / (sz - 1);
for ( int i = 0; i < sz; i++ ){
xval[i] = -1 + 15 * i * delta;
yval[i] = -20 + 30 * i * delta;
}
// Function values
BivariateFunction f = new BivariateFunction() {
public double value( double x, double y ) {
return 2 * x - 3 * y + 5;
}
};
double[][] zval = new double[xval.length][yval.length];
for ( int i = 0; i < xval.length; i++ ) {
for ( int j = 0; j < yval.length; j++ ) {
zval[i][j] = f.value(xval[i], yval[j]);
}
}
BivariateGridInterpolator interpolator = new PiecewiseBicubicSplineInterpolator();
BivariateFunction p = interpolator.interpolate(xval, yval, zval);
double x, y;
final RandomGenerator rng = new Well19937c(1234567L); // "tol" depends on the seed.
final UniformRealDistribution distX = new UniformRealDistribution( rng, xval[0], xval[xval.length - 1] );
final UniformRealDistribution distY = new UniformRealDistribution( rng, yval[0], yval[yval.length - 1] );
final int numSamples = 50;
final double tol = 2e-14;
for ( int i = 0; i < numSamples; i++ ) {
x = distX.sample();
for ( int j = 0; j < numSamples; j++ ) {
y = distY.sample();
// System.out.println(x + " " + y + " " + f.value(x, y) + " " + p.value(x, y));
Assert.assertEquals(f.value(x, y), p.value(x, y), tol);
}
// System.out.println();
}
}
示例11: testInterpolation2
import org.apache.commons.math3.distribution.UniformRealDistribution; //导入方法依赖的package包/类
/**
* Interpolating a paraboloid.
* <p>
* z = 2 x<sup>2</sup> - 3 y<sup>2</sup> + 4 x y - 5
*/
@Test
public void testInterpolation2() {
final int sz = 21;
double[] xval = new double[sz];
double[] yval = new double[sz];
// Coordinate values
final double delta = 1d / (sz - 1);
for ( int i = 0; i < sz; i++ ) {
xval[i] = -1 + 15 * i * delta;
yval[i] = -20 + 30 * i * delta;
}
// Function values
BivariateFunction f = new BivariateFunction() {
public double value( double x, double y ) {
return 2 * x * x - 3 * y * y + 4 * x * y - 5;
}
};
double[][] zval = new double[xval.length][yval.length];
for ( int i = 0; i < xval.length; i++ ) {
for ( int j = 0; j < yval.length; j++ ) {
zval[i][j] = f.value(xval[i], yval[j]);
}
}
BivariateGridInterpolator interpolator = new PiecewiseBicubicSplineInterpolator();
BivariateFunction p = interpolator.interpolate(xval, yval, zval);
double x, y;
final RandomGenerator rng = new Well19937c(1234567L); // "tol" depends on the seed.
final UniformRealDistribution distX = new UniformRealDistribution( rng, xval[0], xval[xval.length - 1] );
final UniformRealDistribution distY = new UniformRealDistribution( rng, yval[0], yval[yval.length - 1] );
final int numSamples = 50;
final double tol = 5e-13;
for ( int i = 0; i < numSamples; i++ ) {
x = distX.sample();
for ( int j = 0; j < numSamples; j++ ) {
y = distY.sample();
// System.out.println(x + " " + y + " " + f.value(x, y) + " " + p.value(x, y));
Assert.assertEquals(f.value(x, y), p.value(x, y), tol);
}
// System.out.println();
}
}
示例12: AlleleFractionSimulatedData
import org.apache.commons.math3.distribution.UniformRealDistribution; //导入方法依赖的package包/类
public AlleleFractionSimulatedData(final double averageHetsPerSegment, final int numSegments,
final double averageDepth, final double biasMean, final double biasVariance, final double outlierProbability) {
rng.setSeed(RANDOM_SEED);
this.numSegments = numSegments;
final AlleleFractionState.MinorFractions minorFractions = new AlleleFractionState.MinorFractions(numSegments);
final List<AllelicCount> alleleCounts = new ArrayList<>();
final List<SimpleInterval> segments = new ArrayList<>();
final PoissonDistribution segmentLengthGenerator = makePoisson(rng, averageHetsPerSegment);
final PoissonDistribution readDepthGenerator = makePoisson(rng, averageDepth);
final UniformRealDistribution minorFractionGenerator = new UniformRealDistribution(rng, 0.0, 0.5);
//translate to ApacheCommons' parametrization of the gamma distribution
final double gammaShape = biasMean * biasMean / biasVariance;
final double gammaScale = biasVariance / biasMean;
final GammaDistribution biasGenerator = new GammaDistribution(rng, gammaShape, gammaScale);
//put each segment on its own chromosome and sort by lexicographical order
final List<String> chromosomes = IntStream.range(0, numSegments).mapToObj(Integer::toString).collect(Collectors.toList());
Collections.sort(chromosomes);
for (final String chromosome : chromosomes) {
// calculate the range of het indices for this segment
final int numHetsInSegment = Math.max(MIN_HETS_PER_SEGMENT, segmentLengthGenerator.sample());
final double minorFraction = minorFractionGenerator.sample();
minorFractions.add(minorFraction);
//we will put all the hets in this segment/chromosome at loci 1, 2, 3 etc
segments.add(new SimpleInterval(chromosome, 1, numHetsInSegment + 1));
for (int het = 1; het < numHetsInSegment + 1; het++) {
final double bias = biasGenerator.sample();
//flip a coin to decide alt minor (alt fraction = minor fraction) or ref minor (alt fraction = 1 - minor fraction)
final boolean isAltMinor = rng.nextDouble() < 0.5;
final double altFraction = isAltMinor ? minorFraction : 1 - minorFraction;
//the probability of an alt read is the alt fraction modified by the bias or, in the case of an outlier, random
final double pAlt;
if (rng.nextDouble() < outlierProbability) {
truePhases.add(AlleleFractionIndicator.OUTLIER);
pAlt = rng.nextDouble();
} else {
truePhases.add(isAltMinor ? AlleleFractionIndicator.ALT_MINOR : AlleleFractionIndicator.REF_MINOR);
pAlt = altFraction / (altFraction + (1 - altFraction) * bias);
}
final int numReads = readDepthGenerator.sample();
final int numAltReads = new BinomialDistribution(rng, numReads, pAlt).sample();
final int numRefReads = numReads - numAltReads;
alleleCounts.add(new AllelicCount(new SimpleInterval(chromosome, het, het), numRefReads, numAltReads));
}
}
final Genome genome = new Genome(TRIVIAL_TARGETS, alleleCounts);
segmentedGenome = new SegmentedGenome(segments, genome);
trueState = new AlleleFractionState(biasMean, biasVariance, outlierProbability, minorFractions);
}
示例13: nextDouble
import org.apache.commons.math3.distribution.UniformRealDistribution; //导入方法依赖的package包/类
/**
* Generates a uniformly distributed random value from the interval [lower,upper).
*
* @param rng the random generator to use
* @param lower the lower bound
* @param upper the upper bound
* @return a uniformly distributed random value from the interval [lower,upper)
*/
public static double nextDouble(final RandomGenerator rng, final double lower, final double upper) {
final UniformRealDistribution distribution = new UniformRealDistribution(rng, lower, upper);
return distribution.sample();
}