commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Artem Barger (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (RNG-5) Create API usage demo example application.
Date Wed, 10 Aug 2016 22:03:20 GMT

    [ https://issues.apache.org/jira/browse/RNG-5?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15416103#comment-15416103
] 

Artem Barger commented on RNG-5:
--------------------------------

/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.commons.rng;

abstract public class AbstractMonteCarloComputation {

    /**
     * Desired approximation error bound
     */
    private double error;

    /**
     * Random source provider.
     */
    private UniformRandomProvider provider;

    /**
     * Number of generated points
     */
    private int generatedNums;

    /**
     * Actual approximation error received in computation.
     */
    private double actualError;

    /**
     * Monte Carlo simulation constructor.
     *
     * @param error  approximation error
     * @param source random source {@link RandomSource} to indicate the RNG algorithm
     */
    public AbstractMonteCarloComputation(double error, RandomSource source) {
        this.error = error;
        this.provider = RandomSource.create(source);
    }

    /**
     * Uses quasi Monte-Carlo simulation to approximate computation.
     *
     * @return approximated by simulation value, requires implementation of desired computation
     * inside {@link AbstractMonteCarloComputation#computeValue()} method
     * @see <a href="https://en.wikipedia.org/wiki/Quasi-Monte_Carlo_method">Wikipedia</a>
     */
    public double simulation() {
        double newValue = Double.MAX_VALUE;
        double oldValue = Double.MIN_VALUE;
        while ((actualError = Math.abs(oldValue - newValue)) > error) {
            oldValue = newValue;
            newValue = computeValue();
        }

        return newValue;
    }

    abstract public double computeValue();

    /**
     * Returns the amount of numbers required to generate to converge with desired error value.
     *
     * @return amount of numbers generated
     */
    public int generatedNums() {
        return generatedNums;
    }

    /**
     * Returns the absolute error of approximated PI value.
     *
     * @return the actual approximation error
     */
    public double getError() {
        return actualError;
    }

}


> Create API usage demo example application.
> ------------------------------------------
>
>                 Key: RNG-5
>                 URL: https://issues.apache.org/jira/browse/RNG-5
>             Project: Commons RNG
>          Issue Type: Task
>            Reporter: Artem Barger
>         Attachments: ComputePiDemo.java
>
>
> Need to create a demo application for user guide to demonstrate how to use the API and
show possible application.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message