/// <summary> /// Generates a random vector of observations from the current distribution. /// </summary> /// /// <param name="samples">The number of samples to generate.</param> /// <param name="result">The location where to store the samples.</param> /// /// <returns>A random vector of observations drawn from this distribution.</returns> /// public virtual int[][] Generate(int samples, int[][] result) { if (generator == null) { generator = MetropolisHasting.Discrete(Dimension, this); } return(generator.Generate(samples, result)); }
public virtual int[][] Generate(int samples, int[][] result, Random source) { if (generator == null) { generator = MetropolisHasting.Discrete(Dimension, this); } if (generator.RandomSource != source) { generator.RandomSource = source; } return(generator.Generate(samples, result)); }
public virtual double[][] Generate(int samples, double[][] result, Random source) { if (generator == null) { generator = new MetropolisHasting(Dimension, LogProbabilityDensityFunction); } if (generator.RandomSource != source) { generator.RandomSource = source; } return(Elementwise.Round(Generate(samples), result: result)); }