Random.NextDouble Method
[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]
Returns a random number between 0.0 and 1.0.
Assembly: mscorlib (in mscorlib.dll)
Return Value
Type: System.DoubleA double-precision floating point number greater than or equal to 0.0, and less than 1.0.
The following example uses the NextDouble method to generate sequences of random doubles.
// Example of the Random class constructors and Random.NextDouble( ) // method. using System; using System.Threading; public class Example { // Generate random numbers from the specified Random object. static void RunIntNDoubleRandoms(System.Windows.Controls.TextBlock outputBlock, Random randObj) { // Generate the first six random integers. for (int j = 0; j < 6; j++) outputBlock.Text += String.Format(" {0,10} ", randObj.Next()); outputBlock.Text += "\n"; // Generate the first six random doubles. for (int j = 0; j < 6; j++) outputBlock.Text += String.Format(" {0:F8} ", randObj.NextDouble()); outputBlock.Text += "\n"; } // Create a Random object with the specified seed. static void FixedSeedRandoms(System.Windows.Controls.TextBlock outputBlock, int seed) { outputBlock.Text += String.Format( "\nRandom numbers from a Random object with " + "seed = {0}:", seed) + "\n"; Random fixRand = new Random(seed); RunIntNDoubleRandoms(outputBlock, fixRand); } // Create a random object with a timer-generated seed. static void AutoSeedRandoms(System.Windows.Controls.TextBlock outputBlock) { // Wait to allow the timer to advance. Thread.Sleep(1); outputBlock.Text += String.Format( "\nRandom numbers from a Random object " + "with an auto-generated seed:") + "\n"; Random autoRand = new Random(); RunIntNDoubleRandoms(outputBlock, autoRand); } public static void Demo(System.Windows.Controls.TextBlock outputBlock) { outputBlock.Text += String.Format( "This example of the Random class constructors and " + "Random.NextDouble( ) \n" + "generates the following output.\n") + "\n"; outputBlock.Text += String.Format( "Create Random objects, and then generate and " + "display six integers and \nsix doubles from each.") + "\n"; FixedSeedRandoms(outputBlock, 123); FixedSeedRandoms(outputBlock, 123); FixedSeedRandoms(outputBlock, 456); FixedSeedRandoms(outputBlock, 456); AutoSeedRandoms(outputBlock); AutoSeedRandoms(outputBlock); AutoSeedRandoms(outputBlock); } } /* This example of the Random class constructors and Random.NextDouble( ) generates the following output. Create Random objects, and then generate and display six integers and six doubles from each. Random numbers from a Random object with seed = 123: 2114319875 1949518561 1596751841 1742987178 1586516133 103755708 0.01700087 0.14935942 0.19470390 0.63008947 0.90976122 0.49519146 Random numbers from a Random object with seed = 123: 2114319875 1949518561 1596751841 1742987178 1586516133 103755708 0.01700087 0.14935942 0.19470390 0.63008947 0.90976122 0.49519146 Random numbers from a Random object with seed = 456: 2044805024 1323311594 1087799997 1907260840 179380355 120870348 0.21988117 0.21026556 0.39236514 0.42420498 0.24102703 0.47310170 Random numbers from a Random object with seed = 456: 2044805024 1323311594 1087799997 1907260840 179380355 120870348 0.21988117 0.21026556 0.39236514 0.42420498 0.24102703 0.47310170 Random numbers from a Random object with an auto-generated seed: 380213349 127379247 1969091178 1983029819 1963098450 1648433124 0.08824121 0.41249688 0.36445811 0.05637512 0.62702451 0.49595560 Random numbers from a Random object with an auto-generated seed: 861793304 2133528783 1947358439 124230908 921262645 1087892791 0.56880819 0.42934091 0.60162512 0.74388610 0.99432979 0.30310005 Random numbers from a Random object with an auto-generated seed: 1343373259 1992194672 1925625700 412915644 2026910487 527352458 0.04937517 0.44618494 0.83879212 0.43139707 0.36163507 0.11024451 */
The following example calls the NextDouble method to generate 100 random numbers and displays their frequency distribution.
using System; public class Example { public static void Demo(System.Windows.Controls.TextBlock outputBlock) { int[] frequency = new int[10]; double number; Random rnd = new Random(); for (int ctr = 0; ctr <= 99; ctr++) { number = rnd.NextDouble(); frequency[(int)Math.Floor(number * 10)]++; } outputBlock.Text += "Distribution of Random Numbers:" + "\n"; for (int ctr = frequency.GetLowerBound(0); ctr <= frequency.GetUpperBound(0); ctr++) outputBlock.Text += String.Format("0.{0}0-0.{0}9 {1}", ctr, frequency[ctr]) + "\n"; } } // The following example displays output similar to the following: // Distribution of Random Numbers: // 0.00-0.09 16 // 0.10-0.19 8 // 0.20-0.29 8 // 0.30-0.39 11 // 0.40-0.49 9 // 0.50-0.59 6 // 0.60-0.69 13 // 0.70-0.79 6 // 0.80-0.89 9 // 0.90-0.99 14
Show: