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)