Export (0) Print
Expand All

Random.Next Method (Int32, Int32)

Returns a random integer that is within a specified range.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)

public virtual int Next(
	int minValue,
	int maxValue
)

Parameters

minValue
Type: System.Int32

The inclusive lower bound of the random number returned.

maxValue
Type: System.Int32

The exclusive upper bound of the random number returned. maxValue must be greater than or equal to minValue.

Return Value

Type: System.Int32
A 32-bit signed integer greater than or equal to minValue and less than maxValue; that is, the range of return values includes minValue but not maxValue. If minValue equals maxValue, minValue is returned.

ExceptionCondition
ArgumentOutOfRangeException

minValue is greater than maxValue.

Unlike the other overloads of the Next method, which return only non-negative values, this method can return a negative random integer.

Notes to Inheritors

Starting with the .NET Framework version 2.0, if you derive a class from Random and override the Sample method, the distribution provided by the derived class implementation of the Sample method is not used in calls to the base class implementation of the Random.Next(Int32, Int32) method overload if the difference between the minValue and maxValue parameters is greater than Int32.MaxValue. Instead, the uniform distribution returned by the base Random class is used. This behavior improves the overall performance of the Random class. To modify this behavior to call the Sample method in the derived class, you must also override the Random.Next(Int32, Int32) method overload.

The following example uses the Random.Next(Int32, Int32) method to generate random integers with three distinct ranges. Note that the exact output from the example depends on the system-supplied seed value passed to the Random class constructor.

using System;

public class Example
{
   public static void Main()
   {
      Random rnd = new Random();

      Console.WriteLine("\n20 random integers from -100 to 100:");
      for (int ctr = 1; ctr <= 20; ctr++) 
      {
         Console.Write("{0,6}", rnd.Next(-100, 101));
         if (ctr % 5 == 0) Console.WriteLine();
      }

      Console.WriteLine("\n20 random integers from 1000 to 10000:");      
      for (int ctr = 1; ctr <= 20; ctr++) 
      {
         Console.Write("{0,8}", rnd.Next(1000, 10001));
         if (ctr % 5 == 0) Console.WriteLine();
      }

      Console.WriteLine("\n20 random integers from 1 to 10:");
      for (int ctr = 1; ctr <= 20; ctr++) 
      {
         Console.Write("{0,6}", rnd.Next(1, 11));
         if (ctr % 5 == 0) Console.WriteLine();
      }
   }
}
// The example displays output similar to the following: 
//       20 random integers from -100 to 100: 
//           65   -95   -10    90   -35 
//          -83   -16   -15   -19    41 
//          -67   -93    40    12    62 
//          -80   -95    67   -81   -21 
//        
//       20 random integers from 1000 to 10000: 
//           4857    9897    4405    6606    1277 
//           9238    9113    5151    8710    1187 
//           2728    9746    1719    3837    3736 
//           8191    6819    4923    2416    3028 
//        
//       20 random integers from 1 to 10: 
//            9     8     5     9     9 
//            9     1     2     3     8 
//            1     4     8    10     5 
//            9     7     9    10     5

The following example generates a random integer that it uses as an index to retrieve a string value from an array. Because the highest index of the array is one less than its length, the value of the Array.Length property is supplied as a the maxValue parameter.

using System;

public class Example
{
   public static void Main()
   {
      Random rnd = new Random();
      string[] malePetNames = { "Rufus", "Bear", "Dakota", "Fido", 
                                "Vanya", "Samuel", "Koani", "Volodya", 
                                "Prince", "Yiska" };
      string[] femalePetNames = { "Maggie", "Penny", "Saya", "Princess", 
                                  "Abby", "Laila", "Sadie", "Olivia", 
                                  "Starlight", "Talla" };                                      

      // Generate random indexes for pet names. 
      int mIndex = rnd.Next(0, malePetNames.Length);
      int fIndex = rnd.Next(0, femalePetNames.Length);

      // Display the result.
      Console.WriteLine("Suggested pet name of the day: ");
      Console.WriteLine("   For a male:     {0}", malePetNames[mIndex]);
      Console.WriteLine("   For a female:   {0}", femalePetNames[fIndex]);
   }
}
// The example displays the following output: 
//       Suggested pet name of the day: 
//          For a male:     Koani 
//          For a female:   Maggie

.NET Framework

Supported in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Portable Class Library

Supported in: Portable Class Library

.NET for Windows Store apps

Supported in: Windows 8

.NET for Windows Phone apps

Supported in: Windows Phone 8.1, Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Show:
© 2014 Microsoft