auto specifyDimension(ReturnType, NDVariable)(NDVariable vr)
if (__traits(isStaticArray, ReturnType) && __traits(compiles, {static assert(NDVariable.isRandomVariable);}))
import mir.random : isSaturatedRandomEngine;
import mir.random.variable : isRandomVariable;
enum bool isRandomVariable = true;
ReturnType opCall(G)(scope ref G gen) if (isSaturatedRandomEngine!G)
ReturnType opCall(G)(scope G* gen) if (isSaturatedRandomEngine!G)
static assert(isRandomVariable!V);
import mir.random : Random, threadLocalPtr;
import mir.random.ndvariable : multivariateNormalVar;
import mir.random.algorithm : range;
import mir.ndslice.slice : sliced;
auto mu = [10.0, 0.0].sliced;
auto sigma = [2.0, -1.5, -1.5, 2.0].sliced(2,2);
Random* rng = threadLocalPtr!Random;
.range(multivariateNormalVar(mu, sigma).specifyDimension!(double[2]))