/** * Samples from Multinomial Normal Distribution. * * @param mean * @param covariance * @return A multinomialGaussianSample from the Multinomial Normal Distribution */ public static double[] multinomialGaussianSample(double[] mean, double[][] covariance) { MultivariateNormalDistribution gaussian = new MultivariateNormalDistribution(mean, covariance); gaussian.reseedRandomGenerator(RandomGenerator.getThreadLocalRandom().nextLong()); return gaussian.sample(); }
MultivariateNormalDistribution mnd = new MultivariateNormalDistribution(means, covariances); double vals[] = mnd.sample();
double[][] samples = new double[size][]; for(int i=0; i<size; ++i) { samples[i] = multivariateNormalDistribution.sample(); } else { MultivariateNormalDistribution multivariateNormalDistribution = (MultivariateNormalDistribution)first; double[] sample = multivariateNormalDistribution.sample(); List<Number> sampleList = new ArrayList(sample.length); for(int i=0; i<sample.length; i++) {
@Override public void consume(List<Datum> records) throws Exception { if (!hasConsumed) { n = records.get(0).metrics().getDimension(); mean = new ArrayRealVector(n); covV = new ArrayRealVector(n, 1d/n); covM = new DiagonalMatrix(covV.toArray()); mnd = new MultivariateNormalDistribution(mean.toArray(), covM.getData()); mnd.reseedRandomGenerator(randomSeed); randomProjectionMatrix = new BlockRealMatrix(mnd.sample(k)); hasConsumed = true; } for (Datum d: records){ metricVector = d.metrics(); transformedVector = randomProjectionMatrix.operate(metricVector); output.add(new Datum(d,transformedVector)); } }
double[] noises = distribution.sample(); for (int k=0;k<numClass;k++){ double dot = weights[k].dot(dataSet.getRow(i));