/// <summary> /// Generates a random observation from the current distribution. /// </summary> /// /// <returns>A random observations drawn from this distribution.</returns> /// public override double Generate() { // Choose one coefficient at random int c = GeneralDiscreteDistribution.Random(coefficients); // Sample from the chosen coefficient var d = components[c] as ISampleableDistribution <double>; if (d == null) { throw new InvalidOperationException(); } return(d.Generate()); }