Java tutorial
/* * Software License Agreement (BSD License) * * Copyright 2013 Marc Pujol <mpujol@iiia.csic.es>. * * Redistribution and use of this software in source and binary forms, with or * without modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * Neither the name of IIIA-CSIC, Artificial Intelligence Research Institute * nor the names of its contributors may be used to * endorse or promote products derived from this * software without specific prior written permission of * IIIA-CSIC, Artificial Intelligence Research Institute * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ package es.csic.iiia.planes.util; import org.apache.commons.math3.distribution.AbstractMultivariateRealDistribution; import org.apache.commons.math3.distribution.UniformRealDistribution; import org.apache.commons.math3.exception.DimensionMismatchException; import org.apache.commons.math3.random.Well19937c; /** * * @author Marc Pujol <mpujol@iiia.csic.es> */ public class MultivariateUniformDistribution extends AbstractMultivariateRealDistribution { private UniformRealDistribution[] distributions; public MultivariateUniformDistribution(double[] lowers, double[] uppers) { super(new Well19937c(), lowers.length); final int n_vars = getDimension(); if (uppers.length != n_vars) { throw new DimensionMismatchException(uppers.length, n_vars); } distributions = new UniformRealDistribution[n_vars]; for (int i = 0; i < n_vars; i++) { distributions[i] = new UniformRealDistribution(random, lowers[i], uppers[i]); } } @Override public double[] sample() { double[] sample = new double[getDimension()]; for (int i = 0; i < getDimension(); i++) { sample[i] = distributions[i].sample(); } return sample; } @Override public double density(double[] x) { throw new UnsupportedOperationException("Not supported yet."); } }