Double factors

This page lists the built-in methods and operators for creating random variables of type double. For both static methods and operators, you can often pass in random variables as arguments e.g. Variable<double> instead of double. For compactness, this is not shown in the syntax below.

These methods provide a convenient short alternative to using Variable<T>.Factor and passing in the factor method, as described on this page.

Distribution Factors

A distribution factor creates a random variable from a parameterised distribution.

Distribution
Syntax
Description
Gaussian Variable.GaussianFromMeanAndPrecision(double mean, double precision)  Creates a double random variable with a Gaussian distribution of the specified mean and precision (inverse variance).
Gaussian Variable.GaussianFromMeanAndVariance(double mean, double variance)  Creates a double random variable with a Gaussian distribution of the specified mean and variance.
Gamma Variable.GammaFromShapeAndScale(double shape, double scale) Creates a positive double random variable with a Gamma distribution of the specified shape and scale.
Gamma Variable.GammaFromShapeAndRate(double shape, double rate) Creates a positive double random variable with a Gamma distribution of the specified shape and rate.
Gamma Variable.GammaFromMeanAndVariance(double mean, double variance) Creates a positive double random variable with a Gamma distribution of the specified mean and variance.
Beta Variable.Beta(double trueCount, double falseCount) Creates a double random variable with a Beta distribution with the specified counts.
Beta Variable.GaussianFromMeanAndVariance(double mean, double variance) Creates a double random variable with a Beta distribution of the specified mean and variance.
Truncated Gaussian Variable.TruncatedGaussian(double mean, double variance, double lowerBound, double upperBound)  Creates a double random variable with a TruncatedGaussian distribution of the specified mean, variance, lower bound, and upper bound.

Arithmetic and Mathematical Operations

Arithmetic operations are supported via operator overloads or static methods.

Operation
Syntax
Description
Plus
a + b
Creates a double random variable equal to the sum of a and b.
Minus a - b Creates a double random variable equal to the difference of a and b.
Negative -a Creates a double random variable equal to the negative of a.
Times a * b Creates a double random variable equal to the product of a and b.
Divide a / b Creates a double random variable equal to the ratio of a to b.
Sum of elements Variable.Sum(double[] array)
Variable.Sum(IList<double> array
Creates a double random variable equal to  the sum of the elements of the array.
Exp Variable.Exp(double exponent) Creates a double random variable which takes e to the power of exponent.
Log Variable.Exp(double x) Creates a double random variable equal to the natural log of x.
Logistic Variable.Logistic(double x) Creates a double random variable equal to 1/(1+exp(-x)).
Max Variable.Max(double a, double b) Creates a double random variable equal to the maximum of a and b.
Min -Variable.Max(-a, -b) Creates a double random variable equal to the minimum of a and b.
Conditional sum of elements Variable.SumWhere(bool[] a, Vector b)
Creates a double random variable equal to the sum of the elements of b where a is true.
Inner product Variable.InnerProduct(Vector a, Vector b) Creates a double random variable equal to the inner product of vectors a and b.

Miscellaneous Operations

Operation
Syntax
Description
FunctionEvaluate Variable.FunctionEvaluate(IFunction func, Vector x) Evaluate a random function at a point.  Used to construct Gaussian Process models like this one.
GetItem Variable.GetItem(Vector source, int index) Extract an element of a random vector.
Double Variable.Double(int integer) Convert an integer to double.
©2009-2015 Microsoft Corporation. All rights reserved.  Terms of Use | Trademarks | Privacy Statement