public class RandomVariateFactory
extends java.lang.Object
RandomVariate instances from "orders". The
"specifications" of each order are as generic as possible:
String (name of class), Object... (parameters),
long (seed), long[] (seeds),
RandomNumber (instance of supporting Un(0,1) generator).
The default supporting RandomNumber may be determined by the
implementation of the RandomVariate, but a "well-behaved"
implementation uses DEFAULT_RNG by default. This is done by
simply having setRandomNumber(RandomNumber) (required by
RandomVariate interface) that is a simple pass-through.
The (current) DEFAULT_RNG is a Mersenne Twister, but may be
changed by a static call to setDefaultRandomNumber(RandomNumber)
prior to any RandomVariate "orders."
TODO: replace the searchPackage construct with finding & loading given RandomVariate classes on the classpath.
| Modifier and Type | Field and Description |
|---|---|
protected static java.util.Map<java.lang.String,java.lang.Class<? extends RandomVariate>> |
cache
Holds a cache of the RandomVariate Classes that have already been found
indexed by their name.
|
protected static RandomNumber |
DEFAULT_RNG
Default RandomNumber instance.
|
private static java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.Object>> |
DEFAULTS_MAP |
private static java.util.regex.Pattern |
DISCRETE_INTEGER_PATTERN |
private static java.lang.String |
DISCRETE_INTEGER_REGEX |
private static java.util.regex.Pattern |
DISCRETE_VARIATE_PATTERN |
private static java.lang.String |
DISCRETE_VARIATE_REGEX |
private static boolean |
loadAllClasses |
static java.util.logging.Logger |
LOGGER |
private static java.util.regex.Pattern |
NAME_PATTERN
This Pattern is used to match & group the RandomVariate name in a
String
|
static java.lang.String |
NAME_REGEX
Regular expression used to group name of RandomVariate when parsing a
String
|
static java.lang.String |
NUMBER_REGEX
This regular expression should match any number, integer or floating
point, including scientific notation.
|
static java.lang.String |
PARAM_SPLITTER
The parameters portion of the String should split by these characters
|
static java.lang.String |
RANDOM_INSTANCE_KEY |
static java.lang.String |
RANDOM_NUMBER_CLASSNAME_KEY |
static java.lang.String |
RANDOM_NUMBER_STREAM_ID_KEY |
static java.lang.String |
RANDOM_NUMBER_SUBSTREAM_ID_KEY |
static java.lang.String |
RANDOM_VARIATE_CLASSNAME_KEY |
protected static java.util.Set<java.lang.String> |
SEARCH_PACKAGES
A list of packages to search for RandomVariates if the class name given
is not fully qualified.
|
protected static boolean |
verbose
If true, print out information while searching for RandomVariate Classes.
|
| Modifier | Constructor and Description |
|---|---|
protected |
RandomVariateFactory()
This factory Class should never by instantiated.
|
| Modifier and Type | Method and Description |
|---|---|
static void |
addSearchPackage(java.lang.String newPackage)
Adds the given fully qualified package name to the list of packages that
will be searched when attempting to find RandomVariates by name.
|
static java.lang.Class<? extends RandomVariate> |
findFullyQualifiedNameFor(java.lang.String className)
Finds the RandomVariate Class corresponding to the given name.
|
static java.util.Map<java.lang.String,java.lang.Class<? extends RandomVariate>> |
getCache() |
static RandomNumber |
getDefaultRandomNumber() |
static DiscreteRandomVariate |
getDiscreteRandomVariateInstance(java.lang.String toString) |
static DiscreteRandomVariate |
getDiscreteRandomVariateInstance(java.lang.String className,
java.lang.Object... params) |
static DiscreteRandomVariate |
getDiscreteRandomVariateInstance(java.lang.String className,
RandomNumber rng,
java.lang.Object... params) |
static RandomVariate |
getInstance(RandomVariate rv)
Gets a new instance of the given RandomVariate.
|
static RandomVariate |
getInstance(java.lang.String toString)
Parses and instantiates a RandomVariate based on a purely String
representation.
|
static RandomVariate |
getInstance(java.lang.String className,
java.util.Map<java.lang.String,java.lang.Object> params) |
static RandomVariate |
getInstance(java.lang.String className,
java.lang.Object... parameters)
Creates a
RandomVariate instance with default seed(s) and
the default supporting RandomNumber. |
static RandomVariate |
getInstance(java.lang.String className,
RandomNumber rng,
java.lang.Object... parameters)
Creates a
RandomVariate instance supported by the
RandomNumber instance passed in. |
static java.util.Set<java.lang.String> |
getSEARCH_PACKAGES() |
protected static RandomVariate |
getUnconfiguredInstance(java.lang.String className) |
static boolean |
isLoadAllClasses() |
static boolean |
isRandomVariateString(java.lang.String toString)
Note: will strip any embedded, leading, or trailing spaces before
checking.
|
static boolean |
isVerbose() |
static DiscreteIntegerVariate |
parseDiscreteIntegerVariate(java.lang.String string) |
static DiscreteVariate |
parseDiscreteVariate(java.lang.String string) |
static boolean |
removeSearchPackage(java.lang.String removedPackage)
Remove the given package from SEARCH_PACKAGES
|
static void |
setDefaultRandomNumber(RandomNumber rng) |
static void |
setLoadAllClasses(boolean aLoadAllClasses) |
static void |
setVerbose(boolean b) |
public static final java.util.logging.Logger LOGGER
public static final java.lang.String RANDOM_VARIATE_CLASSNAME_KEY
public static final java.lang.String RANDOM_INSTANCE_KEY
public static final java.lang.String RANDOM_NUMBER_CLASSNAME_KEY
public static final java.lang.String RANDOM_NUMBER_STREAM_ID_KEY
public static final java.lang.String RANDOM_NUMBER_SUBSTREAM_ID_KEY
private static final java.lang.String DISCRETE_INTEGER_REGEX
private static final java.lang.String DISCRETE_VARIATE_REGEX
private static final java.util.regex.Pattern DISCRETE_INTEGER_PATTERN
private static final java.util.regex.Pattern DISCRETE_VARIATE_PATTERN
private static java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.Object>> DEFAULTS_MAP
protected static final java.util.Map<java.lang.String,java.lang.Class<? extends RandomVariate>> cache
protected static final java.util.Set<java.lang.String> SEARCH_PACKAGES
protected static boolean verbose
protected static RandomNumber DEFAULT_RNG
public static final java.lang.String NAME_REGEX
public static final java.lang.String PARAM_SPLITTER
public static final java.lang.String NUMBER_REGEX
private static final java.util.regex.Pattern NAME_PATTERN
private static boolean loadAllClasses
protected RandomVariateFactory()
public static void setVerbose(boolean b)
b - true if printing out information while searching for
RandomVariate Classes.public static boolean isVerbose()
public static boolean isLoadAllClasses()
public static void setLoadAllClasses(boolean aLoadAllClasses)
aLoadAllClasses - the loadAllClasses to setpublic static java.util.Map<java.lang.String,java.lang.Class<? extends RandomVariate>> getCache()
public static void setDefaultRandomNumber(RandomNumber rng)
rng - New default RandomNumber instancepublic static RandomNumber getDefaultRandomNumber()
public static RandomVariate getInstance(java.lang.String className, java.lang.Object... parameters)
RandomVariate instance with default seed(s) and
the default supporting RandomNumber.className - The fully-qualified class name of the desired instanceparameters - The desired parameters for the instanceRandomVariate based on the
(fully-qualified) class name and the parameters. The default
RandomNumber instance is used with the default seed(s).java.lang.IllegalArgumentException - If the className is null or
a class with that name cannot be found.public static RandomVariate getInstance(java.lang.String className, RandomNumber rng, java.lang.Object... parameters)
RandomVariate instance supported by the
RandomNumber instance passed in.className - The fully-qualified class name of the desired instanceparameters - The desired parameters for the instancerng - An instance of RandomNumber to support this
RandomVariate.RandomVariate based on the
(fully-qualified) class name and the parameters.java.lang.IllegalArgumentException - If the className is null or
a class with that name cannot be found.public static RandomVariate getInstance(RandomVariate rv)
rv - given RandomVariatepublic static RandomVariate getInstance(java.lang.String toString)
"Normal (5.2, 1.5),
"Gamma(1.2, 3.4)", "Constant (10.3)", which
will create Normal, Gamma, and Constant RandomVariate instances,
respectively.toString - Given String that can be parsed to a RandomVariatejava.lang.IllegalArgumentException - if given argument cannot be parsedpublic static boolean isRandomVariateString(java.lang.String toString)
toString - Given name of RandomVariate - may or may not include
"Variate" suffixpublic static void addSearchPackage(java.lang.String newPackage)
newPackage - given fully qualified package namepublic static boolean removeSearchPackage(java.lang.String removedPackage)
removedPackage - Given package to removepublic static java.util.Set<java.lang.String> getSEARCH_PACKAGES()
public static java.lang.Class<? extends RandomVariate> findFullyQualifiedNameFor(java.lang.String className)
className - given name of classaddSearchPackage(String)public static DiscreteRandomVariate getDiscreteRandomVariateInstance(java.lang.String className, java.lang.Object... params)
className - Name of classparams - parametersjava.lang.IllegalArgumentException - if className does not implement
DiscreteRandomVariatepublic static DiscreteRandomVariate getDiscreteRandomVariateInstance(java.lang.String className, RandomNumber rng, java.lang.Object... params)
className - Name of RandomVariate class, which may or may not
include "Variate"rng - Given RandomNumber instance to useparams - Given parameters for this RandomVariatepublic static DiscreteRandomVariate getDiscreteRandomVariateInstance(java.lang.String toString)
public static RandomVariate getInstance(java.lang.String className, java.util.Map<java.lang.String,java.lang.Object> params)
className - Name of RandomVariate classparams - parameters of RandomVariate classprotected static RandomVariate getUnconfiguredInstance(java.lang.String className)
className - Given name of RandomVariatepublic static DiscreteIntegerVariate parseDiscreteIntegerVariate(java.lang.String string)
public static DiscreteVariate parseDiscreteVariate(java.lang.String string)