static IEnumerable <double> SamplesUnchecked(System.Random rnd, double lower, double upper, double mode) { double ml = mode - lower, ul = upper - lower, um = upper - mode; double u = ml / ul, v = ul * ml, w = ul * um; return(rnd.NextDoubleSequence().Select(x => x < u ? lower + Math.Sqrt(x * v) : upper - Math.Sqrt((1 - x) * w))); }
static IEnumerable <int> SamplesUnchecked(System.Random rnd, double p) { if (p == 1.0) { return(Generate.RepeatSequence(1)); } double rp = 1.0 - p; return(rnd.NextDoubleSequence().Select(r => (int)Math.Ceiling(Math.Log(1.0 - r, rp)))); }
static IEnumerable <double> SamplesUnchecked(System.Random rnd, double scale) { return(rnd.NextDoubleSequence().Select(x => scale * Math.Sqrt(-2.0 * Math.Log(x)))); }
static IEnumerable <double> SamplesUnchecked(System.Random rnd, double rate) { return(rnd.NextDoubleSequence().Where(r => r != 0.0).Select(r => - System.Math.Log(r) / rate)); }
static IEnumerable <double> SamplesUnchecked(System.Random rnd, double shape, double scale) { var exponent = 1.0 / shape; return(rnd.NextDoubleSequence().Select(x => scale * Math.Pow(-Math.Log(x), exponent))); }
static IEnumerable <int> SamplesUnchecked(System.Random rnd, double p) { return(rnd.NextDoubleSequence().Select(r => r < p ? 1 : 0)); }
static IEnumerable <double> SamplesUnchecked(System.Random rnd, double scale, double shape) { var power = -1.0 / shape; return(rnd.NextDoubleSequence().Select(x => scale * Math.Pow(x, power))); }