/// <summary> /// Generate next random number /// </summary> /// /// <returns>Returns next random number</returns> /// public double Next( ) { // check if we can use second value if (useSecond) { // return the second number useSecond = false; return(secondValue); } double x1, x2, w, firstValue; // generate new numbers do { x1 = rand.Next( ) * 2.0 - 1.0; x2 = rand.Next( ) * 2.0 - 1.0; w = x1 * x1 + x2 * x2; }while (w >= 1.0); w = Math.Sqrt((-2.0 * Math.Log(w)) / w); // get two standard random numbers firstValue = x1 * w; secondValue = x2 * w; useSecond = true; // return the first number return(firstValue); }
/// <summary> /// Generate next random number /// </summary> /// /// <returns>Returns next random number</returns> /// public double Next( ) { return(-Math.Log(rand.Next( )) / rate); }
/// <summary> /// Generate next random number /// </summary> /// /// <returns>Returns next random number</returns> /// public double Next( ) { return(rand.Next( ) * length + min); }