A Discrete-Event Network Simulator
API
random-variable-stream.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2006 Georgia Tech Research Corporation
4  * Copyright (c) 2011 Mathieu Lacage
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation;
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18  *
19  * Authors: Rajib Bhattacharjea<raj.b@gatech.edu>
20  * Hadi Arbabi<marbabi@cs.odu.edu>
21  * Mathieu Lacage <mathieu.lacage@gmail.com>
22  *
23  * Modified by Mitch Watrous <watrous@u.washington.edu>
24  *
25  */
26 #ifndef RANDOM_VARIABLE_STREAM_H
27 #define RANDOM_VARIABLE_STREAM_H
28 
29 #include "type-id.h"
30 #include "object.h"
31 #include "attribute-helper.h"
32 #include <stdint.h>
33 
40 namespace ns3 {
41 
72 class RngStream;
73 
98 {
99 public:
104  static TypeId GetTypeId (void);
112  virtual ~RandomVariableStream();
113 
119  void SetStream (int64_t stream);
120 
126  int64_t GetStream(void) const;
127 
132  void SetAntithetic(bool isAntithetic);
133 
138  bool IsAntithetic(void) const;
139 
144  virtual double GetValue (void) = 0;
145 
150  virtual uint32_t GetInteger (void) = 0;
151 
152 protected:
156  RngStream *Peek(void) const;
157 
158 private:
179 
182 
185 
187  int64_t m_stream;
188 
189 }; // class RandomVariableStream
190 
191 
234 {
235 public:
240  static TypeId GetTypeId (void);
241 
246 
251  double GetMin (void) const;
252 
257  double GetMax (void) const;
258 
269  double GetValue (double min, double max);
270 
281  uint32_t GetInteger (uint32_t min, uint32_t max);
282 
283  // Inherited from RandomVariableStream
289  virtual double GetValue (void);
295  virtual uint32_t GetInteger (void);
296 
297 private:
299  double m_min;
300 
302  double m_max;
303 
304 }; // class UniformRandomVariable
305 
306 
318 {
319 public:
324  static TypeId GetTypeId (void);
325 
330 
335  double GetConstant (void) const;
336 
342  double GetValue (double constant);
348  uint32_t GetInteger (uint32_t constant);
349 
350  // Inherited from RandomVariableStream
351  /* \note This RNG always returns the same value. */
352  virtual double GetValue (void);
353  /* \note This RNG always returns the same value. */
354  virtual uint32_t GetInteger (void);
355 
356 private:
358  double m_constant;
359 
360 }; // class ConstantRandomVariable
361 
362 
399 {
400 public:
405  static TypeId GetTypeId (void);
406 
412 
417  double GetMin (void) const;
418 
424  double GetMax (void) const;
425 
431 
437  uint32_t GetConsecutive (void) const;
438 
439  // Inherited from RandomVariableStream
440  virtual double GetValue (void);
441  virtual uint32_t GetInteger (void);
442 
443 private:
445  double m_min;
446 
448  double m_max;
449 
452 
454  uint32_t m_consecutive;
455 
457  double m_current;
458 
461 
464 
465 }; // class SequentialRandomVariable
466 
467 
538 {
539 public:
544  static TypeId GetTypeId (void);
545 
551 
559  double GetMean (void) const;
560 
565  double GetBound (void) const;
566 
574  double GetValue (double mean, double bound);
575 
583  uint32_t GetInteger (uint32_t mean, uint32_t bound);
584 
585  // Inherited from RandomVariableStream
586  virtual double GetValue (void);
587  virtual uint32_t GetInteger (void);
588 
589 private:
591  double m_mean;
592 
594  double m_bound;
595 
596 }; // class ExponentialRandomVariable
597 
598 
644 {
645 public:
650  static TypeId GetTypeId (void);
651 
657 
662  double GetMean (void) const;
663 
668  double GetShape (void) const;
669 
674  double GetBound (void) const;
675 
707  double GetValue (double mean, double shape, double bound);
708 
740  uint32_t GetInteger (uint32_t mean, uint32_t shape, uint32_t bound);
741 
775  virtual double GetValue (void);
776 
805  virtual uint32_t GetInteger (void);
806 
807 private:
809  double m_mean;
810 
812  double m_shape;
813 
815  double m_bound;
816 
817 }; // class ParetoRandomVariable
818 
819 
874 {
875 public:
880  static TypeId GetTypeId (void);
881 
887 
892  double GetScale (void) const;
893 
898  double GetShape (void) const;
899 
904  double GetBound (void) const;
905 
931  double GetValue (double scale, double shape, double bound);
932 
958  uint32_t GetInteger (uint32_t scale, uint32_t shape, uint32_t bound);
959 
987  virtual double GetValue (void);
988 
1011  virtual uint32_t GetInteger (void);
1012 
1013 private:
1015  double m_scale;
1016 
1018  double m_shape;
1019 
1021  double m_bound;
1022 
1023 }; // class WeibullRandomVariable
1024 
1025 
1060 {
1061 public:
1063  static const double INFINITE_VALUE;
1064 
1069  static TypeId GetTypeId (void);
1070 
1076 
1081  double GetMean (void) const;
1082 
1087  double GetVariance (void) const;
1088 
1093  double GetBound (void) const;
1094 
1131  double GetValue (double mean, double variance, double bound = NormalRandomVariable::INFINITE_VALUE);
1132 
1169  uint32_t GetInteger (uint32_t mean, uint32_t variance, uint32_t bound);
1170 
1209  virtual double GetValue (void);
1210 
1244  virtual uint32_t GetInteger (void);
1245 
1246 private:
1248  double m_mean;
1249 
1251  double m_variance;
1252 
1254  double m_bound;
1255 
1258 
1260  double m_next;
1261 
1262 }; // class NormalRandomVariable
1263 
1264 
1309 {
1310 public:
1315  static TypeId GetTypeId (void);
1316 
1322 
1327  double GetMu (void) const;
1328 
1333  double GetSigma (void) const;
1334 
1368  double GetValue (double mu, double sigma);
1369 
1403  uint32_t GetInteger (uint32_t mu, uint32_t sigma);
1404 
1441  virtual double GetValue (void);
1442 
1474  virtual uint32_t GetInteger (void);
1475 
1476 private:
1478  double m_mu;
1479 
1481  double m_sigma;
1482 
1483 }; // class LogNormalRandomVariable
1484 
1485 
1518 {
1519 public:
1524  static TypeId GetTypeId (void);
1525 
1531 
1536  double GetAlpha (void) const;
1537 
1542  double GetBeta (void) const;
1543 
1557  double GetValue (double alpha, double beta);
1558 
1572  uint32_t GetInteger (uint32_t alpha, uint32_t beta);
1573 
1590  virtual double GetValue (void);
1591 
1603  virtual uint32_t GetInteger (void);
1604 
1605 private:
1642  double GetNormalValue (double mean, double variance, double bound);
1643 
1645  double m_alpha;
1646 
1648  double m_beta;
1649 
1652 
1654  double m_next;
1655 
1656 }; // class GammaRandomVariable
1657 
1658 
1695 {
1696 public:
1701  static TypeId GetTypeId (void);
1702 
1708 
1713  uint32_t GetK (void) const;
1714 
1719  double GetLambda (void) const;
1720 
1734  double GetValue (uint32_t k, double lambda);
1735 
1749  uint32_t GetInteger (uint32_t k, uint32_t lambda);
1750 
1767  virtual double GetValue (void);
1768 
1780  virtual uint32_t GetInteger (void);
1781 
1782 private:
1807  double GetExponentialValue (double mean, double bound);
1808 
1810  uint32_t m_k;
1811 
1813  double m_lambda;
1814 
1815 }; // class ErlangRandomVariable
1816 
1817 
1847 {
1848 public:
1853  static TypeId GetTypeId (void);
1854 
1860 
1865  double GetMean (void) const;
1866 
1871  double GetMin (void) const;
1872 
1877  double GetMax (void) const;
1878 
1917  double GetValue (double mean, double min, double max);
1918 
1957  uint32_t GetInteger (uint32_t mean, uint32_t min, uint32_t max);
1958 
1999  virtual double GetValue (void);
2000 
2036  virtual uint32_t GetInteger (void);
2037 
2038 private:
2040  double m_mean;
2041 
2043  double m_min;
2044 
2046  double m_max;
2047 
2048 }; // class TriangularRandomVariable
2049 
2050 
2110 {
2111 public:
2116  static TypeId GetTypeId (void);
2117 
2122  ZipfRandomVariable ();
2123 
2128  uint32_t GetN (void) const;
2129 
2134  double GetAlpha (void) const;
2135 
2149  double GetValue (uint32_t n, double alpha);
2150 
2164  uint32_t GetInteger (uint32_t n, uint32_t alpha);
2165 
2182  virtual double GetValue (void);
2183 
2195  virtual uint32_t GetInteger (void);
2196 
2197 private:
2199  uint32_t m_n;
2200 
2202  double m_alpha;
2203 
2205  double m_c;
2206 
2207 }; // class ZipfRandomVariable
2208 
2209 
2250 {
2251 public:
2256  static TypeId GetTypeId (void);
2257 
2262  ZetaRandomVariable ();
2263 
2268  double GetAlpha (void) const;
2269 
2282  double GetValue (double alpha);
2283 
2296  uint32_t GetInteger (uint32_t alpha);
2297 
2314  virtual double GetValue (void);
2315 
2327  virtual uint32_t GetInteger (void);
2328 
2329 private:
2331  double m_alpha;
2332 
2334  double m_b;
2335 
2336 }; // class ZetaRandomVariable
2337 
2338 
2370 {
2371 public:
2376  static TypeId GetTypeId (void);
2377 
2383  virtual ~DeterministicRandomVariable ();
2384 
2393  void SetValueArray (double* values, uint64_t length);
2394 
2399  virtual double GetValue (void);
2400 
2405  virtual uint32_t GetInteger (void);
2406 
2407 private:
2409  uint64_t m_count;
2410 
2412  uint64_t m_next;
2413 
2415  double* m_data;
2416 
2417 }; // class DeterministicRandomVariable
2418 
2419 
2452 {
2453 public:
2458  static TypeId GetTypeId (void);
2459 
2465 
2471  void CDF (double v, double c); // Value, prob <= Value
2472 
2484  virtual double GetValue (void);
2485 
2497  virtual uint32_t GetInteger (void);
2498 
2499 private:
2501  class ValueCDF
2502  {
2503 public:
2505  ValueCDF ();
2512  ValueCDF (double v, double c);
2518  ValueCDF (const ValueCDF& c);
2519 
2521  double value;
2523  double cdf;
2524  };
2535  virtual void Validate ();
2547  virtual double Interpolate (double c1, double c2,
2548  double v1, double v2, double r);
2549 
2553  std::vector<ValueCDF> emp;
2554 
2555 }; // class EmpiricalRandomVariable
2556 
2557 
2558 } // namespace ns3
2559 
2560 #endif /* RANDOM_VARIABLE_STREAM_H */
The Random Number Generator (RNG) that returns a predetermined sequence.
double m_scale
The scale parameter for the Weibull distribution returned by this RNG stream.
double m_current
The current sequence value.
ExponentialRandomVariable()
Creates a exponential distribution RNG with the default values for the mean and upper bound...
double GetSigma(void) const
Returns the sigma value for the log-normal distribution returned by this RNG stream.
double m_next
The algorithm produces two values at a time.
double GetAlpha(void) const
Returns the alpha value for the Zipf distribution returned by this RNG stream.
void SetAntithetic(bool isAntithetic)
Specify whether antithetic values should be generated.
NormalRandomVariable()
Creates a normal distribution RNG with the default values for the mean, variance, and bound...
virtual double GetValue(void)
Returns the next value in the empirical distribution.
void SetStream(int64_t stream)
Specifies the stream number for this RNG stream.
WeibullRandomVariable()
Creates a Weibull distribution RNG with the default values for the scale, shape, and upper bound...
virtual uint32_t GetInteger(void)
Returns a random unsigned integer from a Weibull distribution with the current scale, shape, and upper bound.
double GetAlpha(void) const
Returns the alpha value for the gamma distribution returned by this RNG stream.
virtual double GetValue(void)
Get the next random value as a double drawn from the distribution.
double m_alpha
The alpha value for the Zipf distribution returned by this RNG stream.
double GetLambda(void) const
Returns the lambda value for the Erlang distribution returned by this RNG stream. ...
double GetBound(void) const
Returns the upper bound on values that can be returned by this RNG stream.
double m_mean
The mean value for the triangular distribution returned by this RNG stream.
SequentialRandomVariable()
Creates a sequential RNG with the default values for the sequence parameters.
double m_bound
The upper bound on values that can be returned by this RNG stream.
static TypeId GetTypeId(void)
Register this type.
#define min(a, b)
Definition: 80211b.c:44
The exponential distribution Random Number Generator (RNG).
virtual uint32_t GetInteger(void)
Returns a random unsigned integer from a triangular distribution with the current mean...
The Random Number Generator (RNG) that returns a pattern of sequential values.
RandomVariableStream()
Default constructor.
The normal (Gaussian) distribution Random Number Generator (RNG) that allows stream numbers to be set...
uint64_t m_count
Position in the array of values.
double GetExponentialValue(double mean, double bound)
Returns a random double from an exponential distribution with the specified mean and upper bound...
double m_mean
The mean parameter for the Pareto distribution returned by this RNG stream.
virtual double GetValue(void)
Returns a random double from a normal distribution with the current mean, variance, and bound.
static TypeId GetTypeId(void)
Register this type.
double m_shape
The shape parameter for the Weibull distribution returned by this RNG stream.
uint32_t GetN(void) const
Returns the n value for the Zipf distribution returned by this RNG stream.
int64_t m_stream
The stream number for this RNG stream.
virtual double Interpolate(double c1, double c2, double v1, double v2, double r)
Linear nterpolation between two points on the CDF to estimate the value at r.
double m_constant
The constant value returned by this RNG stream.
double m_min
The first value of the sequence.
double GetConstant(void) const
Get the constant value returned by this RNG stream.
double GetMin(void) const
Get the first value of the sequence.
Ptr< RandomVariableStream > m_increment
Increment between distinct values.
bool m_nextValid
True if the next value is valid.
virtual double GetValue(void)=0
Get the next random value as a double drawn from the distribution.
static TypeId GetTypeId(void)
Register this type.
static TypeId GetTypeId(void)
Register this type.
double m_bound
The upper bound on values that can be returned by this RNG stream.
DeterministicRandomVariable()
Creates a deterministic RNG that will have a predetermined sequence of values.
static TypeId GetTypeId(void)
Register this type.
virtual uint32_t GetInteger(void)
Returns a random unsigned integer from a gamma distribution with the current alpha and beta...
double m_shape
The shape parameter for the Pareto distribution returned by this RNG stream.
uint32_t m_n
The n value for the Zipf distribution returned by this RNG stream.
int64_t GetStream(void) const
Returns the stream number for this RNG stream.
virtual double GetValue(void)
Get the next random value as a double drawn from the distribution.
RngStream * m_rng
Pointer to the underlying RNG stream.
Combined Multiple-Recursive Generator MRG32k3a.
Definition: rng-stream.h:49
virtual void Validate()
Check that the CDF is valid.
double * m_data
Array of values to return in sequence.
Ptr< RandomVariableStream > GetIncrement(void) const
Get the increment for the sequence.
virtual uint32_t GetInteger(void)=0
Get the next random value as an integer drawn from the distribution.
double m_lambda
The lambda value for the Erlang distribution returned by this RNG stream.
double GetMin(void) const
Get the lower bound on randoms returned by GetValue(void).
#define max(a, b)
Definition: 80211b.c:45
double m_alpha
The alpha value for the zeta distribution returned by this RNG stream.
virtual double GetValue(void)
Returns the next value in the sequence.
virtual uint32_t GetInteger(void)
Returns a random unsigned integer from a Pareto distribution with the current mean, shape, and upper bound.
LogNormalRandomVariable()
Creates a log-normal distribution RNG with the default values for mu and sigma.
double GetScale(void) const
Returns the scale parameter for the Weibull distribution returned by this RNG stream.
virtual uint32_t GetInteger(void)
Returns a random unsigned integer from a log-normal distribution with the current mu and sigma...
double GetMin(void) const
Returns the lower bound for the triangular distribution returned by this RNG stream.
uint32_t GetK(void) const
Returns the k value for the Erlang distribution returned by this RNG stream.
double m_max
Strict upper bound on the sequence.
uint32_t GetConsecutive(void) const
Get the number of times each distinct value of the sequence is repeated before incrementing to the ne...
ZetaRandomVariable()
Creates a zeta distribution RNG with the default value for alpha.
uint32_t m_k
The k value for the Erlang distribution returned by this RNG stream.
The gamma distribution Random Number Generator (RNG) that allows stream numbers to be set determinist...
static TypeId GetTypeId(void)
Register this type.
virtual double GetValue(void)
Returns a random double from a triangular distribution with the current mean, min, and max.
virtual uint32_t GetInteger(void)
Returns a random unsigned integer from a Zipf distribution with the current n and alpha...
void CDF(double v, double c)
Specifies a point in the empirical distribution.
Helper to hold one point of the CDF.
virtual uint32_t GetInteger(void)
Get the next random value as an integer drawn from the distribution.
double m_sigma
The sigma value for the log-normal distribution returned by this RNG stream.
static TypeId GetTypeId(void)
Register this type.
ZipfRandomVariable()
Creates a Zipf distribution RNG with the default values for n and alpha.
The uniform distribution Random Number Generator (RNG).
static TypeId GetTypeId(void)
Register this type.
static TypeId GetTypeId(void)
Register this type.
GammaRandomVariable()
Creates a gamma distribution RNG with the default values for alpha and beta.
double GetMu(void) const
Returns the mu value for the log-normal distribution returned by this RNG stream. ...
uint64_t m_next
Position of the next value in the array of values.
static TypeId GetTypeId(void)
Register this type.
double m_c
The normalization constant.
uint32_t m_consecutive
The number of times each distinct value is repeated.
virtual uint32_t GetInteger(void)
Returns a random unsigned integer from a normal distribution with the current mean, variance, and bound.
double GetMax(void) const
Returns the upper bound on values that can be returned by this RNG stream.
double m_variance
The variance value for the normal distribution returned by this RNG stream.
static TypeId GetTypeId(void)
Register this type.
double GetMean(void) const
Get the configured mean value of this RNG.
double m_mean
The mean value of the unbounded exponential distribution.
double GetVariance(void) const
Returns the variance value for the normal distribution returned by this RNG stream.
virtual double GetValue(void)
Returns a random double from a Zipf distribution with the current n and alpha.
virtual double GetValue(void)
Get the next random value as a double drawn from the distribution.
bool m_isCurrentSet
Indicates if the current sequence value has been properly initialized.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
virtual double GetValue(void)
Returns a random double from an Erlang distribution with the current k and lambda.
double m_mean
The mean value for the normal distribution returned by this RNG stream.
static const double INFINITE_VALUE
Large constant to bound the range.
static TypeId GetTypeId(void)
Register this type.
uint32_t m_currentConsecutive
The number of times the current distinct value has been repeated.
ns3::TypeId declaration; inline and template implementations.
double GetMean(void) const
Returns the mean value for the normal distribution returned by this RNG stream.
void SetValueArray(double *values, uint64_t length)
Sets the array of values that holds the predetermined sequence.
virtual uint32_t GetInteger(void)
Get the next random value as an integer drawn from the distribution.
static TypeId GetTypeId(void)
Register this type.
double m_bound
The upper bound on values that can be returned by this RNG stream.
EmpiricalRandomVariable()
Creates an empirical RNG that has a specified, empirical distribution.
double m_beta
The beta value for the gamma distribution returned by this RNG stream.
bool IsAntithetic(void) const
Check if antithetic values will be generated.
virtual double GetValue(void)
Returns a random double from a Weibull distribution with the current scale, shape, and upper bound.
double m_alpha
The alpha value for the gamma distribution returned by this RNG stream.
virtual uint32_t GetInteger(void)
Returns the next value in the sequence.
double GetNormalValue(double mean, double variance, double bound)
Returns a random double from a normal distribution with the specified mean, variance, and bound.
Declaration of Attribute helper macros.
double GetMax(void) const
Get the limit of the sequence, which is (at least) one more than the last value of the sequence...
virtual double GetValue(void)
Returns a random double from a log-normal distribution with the current mu and sigma.
ns3::Object class declaration, which is the root of the Object hierarchy and Aggregation.
virtual uint32_t GetInteger(void)
Returns a random unsigned integer from a zeta distribution with the current alpha.
ParetoRandomVariable()
Creates a Pareto distribution RNG with the default values for the mean, the shape, and upper bound.
double GetBound(void) const
Returns the bound on values that can be returned by this RNG stream.
The Zipf distribution Random Number Generator (RNG) that allows stream numbers to be set deterministi...
The basic uniform Random Number Generator (RNG).
virtual uint32_t GetInteger(void)
Get the next random value as an integer drawn from the distribution.
double GetBound(void) const
Get the configured upper bound of this RNG.
virtual double GetValue(void)
Returns a random double from a zeta distribution with the current alpha.
double GetShape(void) const
Returns the shape parameter for the Weibull distribution returned by this RNG stream.
virtual uint32_t GetInteger(void)
Returns the next value in the empirical distribution.
double m_bound
The bound on values that can be returned by this RNG stream.
double GetMean(void) const
Returns the mean parameter for the Pareto distribution returned by this RNG stream.
virtual uint32_t GetInteger(void)
Returns a random unsigned integer from an Erlang distribution with the current k and lambda...
virtual ~RandomVariableStream()
Destructor.
double m_next
The algorithm produces two normal values at a time.
RngStream * Peek(void) const
Get the pointer to the underlying RNG stream.
double m_b
Just for calculus simplifications.
UniformRandomVariable()
Creates a uniform distribution RNG with the default range.
The triangular distribution Random Number Generator (RNG) that allows stream numbers to be set determ...
static TypeId GetTypeId(void)
Register this type.
double m_max
The upper bound on values that can be returned by this RNG stream.
static TypeId GetTypeId(void)
Register this type.
ErlangRandomVariable()
Creates an Erlang distribution RNG with the default values for k and lambda.
bool m_nextValid
True if the next normal value is valid.
double GetBound(void) const
Returns the upper bound on values that can be returned by this RNG stream.
The Erlang distribution Random Number Generator (RNG) that allows stream numbers to be set determinis...
A base class which provides memory management and object aggregation.
Definition: object.h:87
virtual double GetValue(void)
Returns a random double from a Pareto distribution with the current mean, shape, and upper bound...
The Random Number Generator (RNG) that has a specified empirical distribution.
double GetBeta(void) const
Returns the beta value for the gamma distribution returned by this RNG stream.
virtual double GetValue(void)
Returns a random double from a gamma distribution with the current alpha and beta.
double GetAlpha(void) const
Returns the alpha value for the zeta distribution returned by this RNG stream.
The log-normal distribution Random Number Generator (RNG) that allows stream numbers to be set determ...
a unique identifier for an interface.
Definition: type-id.h:58
TriangularRandomVariable()
Creates a triangular distribution RNG with the default values for the mean, lower bound...
ConstantRandomVariable()
Creates a constant RNG with the default constant value.
The Pareto distribution Random Number Generator (RNG).
double GetMean(void) const
Returns the mean value for the triangular distribution returned by this RNG stream.
static TypeId GetTypeId(void)
Register this type.
double m_mu
The mu value for the log-normal distribution returned by this RNG stream.
double m_min
The lower bound on values that can be returned by this RNG stream.
RandomVariableStream & operator=(const RandomVariableStream &o)
Assignment operator.
bool validated
true once the CDF has been validated.
The Random Number Generator (RNG) that returns a constant.
The Weibull distribution Random Number Generator (RNG) that allows stream numbers to be set determini...
The zeta distribution Random Number Generator (RNG) that allows stream numbers to be set deterministi...
double GetShape(void) const
Returns the shape parameter for the Pareto distribution returned by this RNG stream.
std::vector< ValueCDF > emp
The vector of CDF points.
bool m_isAntithetic
Indicates if antithetic values should be generated by this RNG stream.
double GetMax(void) const
Get the upper bound on values returned by GetValue(void).