|
Commons Math example source code file (ValueServer.java)
The Commons Math ValueServer.java source code/* * 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.math.random; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import org.apache.commons.math.MathRuntimeException; /** * Generates values for use in simulation applications. * <p> * How values are generated is determined by the <code>mode * property.</p> * <p> * Supported <code>mode values are:
valuesFileURL
* <li> UNIFORM_MODE -- generates uniformly distributed random values with
* mean = <code>mu
* <li> EXPONENTIAL_MODE -- generates exponentially distributed random values
* with mean = <code>mu
* <li> GAUSSIAN_MODE -- generates Gaussian distributed random values with
* mean = <code>mu and
* standard deviation = <code>sigma
* <li> CONSTANT_MODE -- returns mu every time.binCount bins.
* <p>
* <code>valuesFileURL must exist and be readable by this process
* at runtime.</p>
* <p>
* This method must be called before using <code>getNext()
* with <code>mode = DIGEST_MODE
*
* @param binCount the number of bins used in computing the empirical
* distribution
* @throws IOException if an error occurs reading the input file
*/
public void computeDistribution(int binCount)
throws IOException {
empiricalDistribution = new EmpiricalDistributionImpl(binCount);
empiricalDistribution.load(valuesFileURL);
mu = empiricalDistribution.getSampleStats().getMean();
sigma = empiricalDistribution.getSampleStats().getStandardDeviation();
}
/** Getter for property mode.
* @return Value of property mode.
*/
public int getMode() {
return mode;
}
/** Setter for property mode.
* @param mode New value of property mode.
*/
public void setMode(int mode) {
this.mode = mode;
}
/**
* Getter for <code>valuesFileURL
* @return Value of property valuesFileURL.
*/
public URL getValuesFileURL() {
return valuesFileURL;
}
/**
* Sets the <code>valuesFileURL using a string URL representation
* @param url String representation for new valuesFileURL.
* @throws MalformedURLException if url is not well formed
*/
public void setValuesFileURL(String url) throws MalformedURLException {
this.valuesFileURL = new URL(url);
}
/**
* Sets the <code>valuesFileURL
* @param url New value of property valuesFileURL.
*/
public void setValuesFileURL(URL url) {
this.valuesFileURL = url;
}
/** Getter for property empiricalDistribution.
* @return Value of property empiricalDistribution.
*/
public EmpiricalDistribution getEmpiricalDistribution() {
return empiricalDistribution;
}
/**
* Resets REPLAY_MODE file pointer to the beginning of the <code>valuesFileURL.
*
* @throws IOException if an error occurs opening the file
*/
public void resetReplayFile() throws IOException {
if (filePointer != null) {
try {
filePointer.close();
filePointer = null;
} catch (IOException ex) {
// ignore
}
}
filePointer = new BufferedReader(new InputStreamReader(valuesFileURL.openStream()));
}
/**
* Closes <code>valuesFileURL after use in REPLAY_MODE.
*
* @throws IOException if an error occurs closing the file
*/
public void closeReplayFile() throws IOException {
if (filePointer != null) {
filePointer.close();
filePointer = null;
}
}
/** Getter for property mu.
* @return Value of property mu.
*/
public double getMu() {
return mu;
}
/** Setter for property mu.
* @param mu New value of property mu.
*/
public void setMu(double mu) {
this.mu = mu;
}
/** Getter for property sigma.
* @return Value of property sigma.
*/
public double getSigma() {
return sigma;
}
/** Setter for property sigma.
* @param sigma New value of property sigma.
*/
public void setSigma(double sigma) {
this.sigma = sigma;
}
//------------- private methods ---------------------------------
/**
* Gets a random value in DIGEST_MODE.
* <p>
* <strong>Preconditions:
computeDistribution()
* must have completed successfully; otherwise an
* <code>IllegalStateException will be thrownOther Commons Math examples (source code examples)Here is a short list of links related to this Commons Math ValueServer.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.