/// <summary> /// Returns a bernoulli distributed random number. /// </summary> /// <returns>A bernoulli distributed 32-bit signed integer.</returns> public int Next() { if (Generator.NextDouble() < _probability) { return(1); } else { return(0); } }
/// <summary> /// Returns a bernoulli distributed floating point random number. /// </summary> /// <returns>A bernoulli distributed double-precision floating point number.</returns> public override double NextDouble() { if (Generator.NextDouble() < _probability) { return(1.0); } else { return(0.0); } }
/// <summary> /// Returns a triangular distributed floating point random number. /// </summary> /// <returns>A triangular distributed double-precision floating point number.</returns> public override double NextDouble() { double genNum = Generator.NextDouble(); if (genNum <= helper1 / helper2) { return(alpha + Math.Sqrt(genNum) * helper3); } else { return(beta - Math.Sqrt(genNum * helper2 - helper1) * helper4); } }
/// <summary> /// Returns a exponential distributed floating point random number. /// </summary> /// <returns>A exponential distributed double-precision floating point number.</returns> public override double NextDouble() { // Subtract random number from 1.0 to avoid Math.Log(0.0) return(helper1 * Math.Log(1.0 - Generator.NextDouble())); }
/// <summary> /// Returns a power distributed floating point random number. /// </summary> /// <returns>A power distributed double-precision floating point number.</returns> public override double NextDouble() { return(Math.Pow(Generator.NextDouble(), helper1) / beta); }
/// <summary> /// Returns a cauchy distributed floating point random number. /// </summary> /// <returns>A cauchy distributed double-precision floating point number.</returns> public override double NextDouble() { return(alpha + gamma * Math.Tan(Math.PI * (Generator.NextDouble() - 0.5))); }
/// <summary> /// Returns a pareto distributed floating point random number. /// </summary> /// <returns>A pareto distributed double-precision floating point number.</returns> public override double NextDouble() { return(alpha / Math.Pow(1.0 - Generator.NextDouble(), helper1)); }
/// <summary> /// Returns a Fisher-Tippett distributed floating point random number. /// </summary> /// <returns>A Fisher-Tippett distributed double-precision floating point number.</returns> public override double NextDouble() { return(mu - alpha * Math.Log(-Math.Log(1.0 - Generator.NextDouble()))); }
/// <summary> /// Returns a laplace distributed floating point random number. /// </summary> /// <returns>A laplace distributed double-precision floating point number.</returns> public override double NextDouble() { double rand = 0.5 - Generator.NextDouble(); return(mu - alpha * Math.Sign(rand) * Math.Log(2.0 * Math.Abs(rand))); }
/// <summary> /// Returns a uniformly distributed floating point random number. /// </summary> /// <returns>A uniformly distributed double-precision floating point number.</returns> public override double NextDouble() { return(alpha + Generator.NextDouble() * helper1); }