es.csic.iiia.planes.util.MultivariateUniformDistribution.java Source code

Java tutorial

Introduction

Here is the source code for es.csic.iiia.planes.util.MultivariateUniformDistribution.java

Source

/*
 * 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.");
    }

}