Export (0) Print
Expand All

Random.Next Method (Int32, Int32)

Returns a random number within a specified range.

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

public virtual int Next (
	int minValue,
	int maxValue
)
public int Next (
	int minValue, 
	int maxValue
)
public function Next (
	minValue : int, 
	maxValue : int
) : int
Not applicable.

Parameters

minValue

The inclusive lower bound of the random number returned.

maxValue

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

Return Value

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.

Exception typeCondition

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 code example generates random integers with various overloads of the Next method.

// Example of the Random.Next( ) methods.
using System;

public class RandomNextDemo  
{
    // Generate random numbers with no bounds specified.
    static void NoBoundsRandoms( int seed )
    {
        Console.WriteLine( 
            "\nRandom object, seed = {0}, no bounds:", seed );
        Random randObj = new Random( seed );

        // Generate six random integers from 0 to int.MaxValue.
        for( int j = 0; j < 6; j++ )
            Console.Write( "{0,11} ", randObj.Next( ) );
        Console.WriteLine( );
    }

    // Generate random numbers with an upper bound specified.
    static void UpperBoundRandoms( int seed, int upper )
    {
        Console.WriteLine( 
            "\nRandom object, seed = {0}, upper bound = {1}:", 
            seed, upper );
        Random randObj = new Random( seed );

        // Generate six random integers from 0 to the upper bound.
        for( int j = 0; j < 6; j++ )
            Console.Write( "{0,11} ", randObj.Next( upper ) );
        Console.WriteLine( );
    }

    // Generate random numbers with both bounds specified.
    static void BothBoundsRandoms( int seed, int lower, int upper )
    {
        Console.WriteLine( 
            "\nRandom object, seed = {0}, lower = {1}, " +
            "upper = {2}:", seed, lower, upper );
        Random randObj = new Random( seed );

        // Generate six random integers from the lower to 
        // upper bounds.
        for( int j = 0; j < 6; j++ )
            Console.Write( "{0,11} ", 
                randObj.Next( lower, upper) );
        Console.WriteLine( );
    }

    static void Main( )
    {	
        Console.WriteLine(                 
            "This example of the Random.Next( ) methods\n" +
            "generates the following output.\n" );
        Console.WriteLine(                 
            "Create Random objects all with the same seed and " +
            "generate\nsequences of numbers with different " +
            "bounds. Note the effect\nthat the various " +
            "combinations of bounds have on the sequences." );
    	
        NoBoundsRandoms( 234 );

        UpperBoundRandoms( 234, Int32.MaxValue );
        UpperBoundRandoms( 234, 2000000000 );
        UpperBoundRandoms( 234, 200000000 );

        BothBoundsRandoms( 234, 0, Int32.MaxValue );
        BothBoundsRandoms( 234, Int32.MinValue, Int32.MaxValue );
        BothBoundsRandoms( 234, -2000000000, 2000000000 );
        BothBoundsRandoms( 234, -200000000, 200000000 );
        BothBoundsRandoms( 234, -2000, 2000 );
    }
}

/*
This example of the Random.Next( ) methods
generates the following output.

Create Random objects all with the same seed and generate
sequences of numbers with different bounds. Note the effect
that the various combinations of bounds have on the sequences.

Random object, seed = 234, no bounds:
 2091148258  1024955023   711273344  1081917183  1833298756   109460588

Random object, seed = 234, upper bound = 2147483647:
 2091148258  1024955023   711273344  1081917183  1833298756   109460588

Random object, seed = 234, upper bound = 2000000000:
 1947533580   954563751   662424922  1007613896  1707392518   101943116

Random object, seed = 234, upper bound = 200000000:
  194753358    95456375    66242492   100761389   170739251    10194311

Random object, seed = 234, lower = 0, upper = 2147483647:
 2091148258  1024955023   711273344  1081917183  1833298756   109460588

Random object, seed = 234, lower = -2147483648, upper = 2147483647:
 2034812868   -97573602  -724936960    16350718  1519113864 -1928562472

Random object, seed = 234, lower = -2000000000, upper = 2000000000:
 1895067160   -90872498  -675150156    15227793  1414785036 -1796113767

Random object, seed = 234, lower = -200000000, upper = 200000000:
  189506716    -9087250   -67515016     1522779   141478503  -179611377

Random object, seed = 234, lower = -2000, upper = 2000:
       1895         -91        -676          15        1414       -1797
*/

// Example of the Random.Next( ) methods.
import System.*;

public class RandomNextDemo
{
    // Generate random numbers with no bounds specified.
    static void NoBoundsRandoms(int seed)
    {
        Console.WriteLine("\nRandom object, seed = {0}, no bounds:",
            System.Convert.ToString(seed));
        Random randObj = new Random(seed);

        // Generate six random integers from 0 to int.MaxValue.
        for (int j = 0; j < 6; j++) {
            Console.Write("{0,11} ", System.Convert.ToString(randObj.Next()));
        }
        Console.WriteLine();
    } //NoBoundsRandoms

    // Generate random numbers with an upper bound specified.
    static void UpperBoundRandoms(int seed, int upper)
    {
        Console.WriteLine("\nRandom object, seed = {0}, upper bound = {1}:", 
            System.Convert.ToString(seed), System.Convert.ToString(upper));
        Random randObj = new Random(seed);

        // Generate six random integers from 0 to the upper bound.
        for (int j = 0; j < 6; j++) {
            Console.Write("{0,11} ",
                System.Convert.ToString(randObj.Next(upper)));
        }
        Console.WriteLine();
    } //UpperBoundRandoms

    // Generate random numbers with both bounds specified.
    static void BothBoundsRandoms(int seed, int lower, int upper)
    {
        Console.WriteLine("\nRandom object, seed = {0}, lower = {1}, "
            + "upper = {2}:", System.Convert.ToString(seed),
            System.Convert.ToString(lower), System.Convert.ToString(upper));
        Random randObj = new Random(seed);
        // Generate six random integers from the lower to 
        // upper bounds.
        for (int j = 0; j < 6; j++) {
            Console.Write("{0,11} ",
                System.Convert.ToString(randObj.Next(lower, upper)));
        }
        Console.WriteLine();
    } //BothBoundsRandoms

    public static void main(String[] args)
    {
        Console.WriteLine(("This example of the Random.Next( ) methods\n" 
            + "generates the following output.\n"));
        Console.WriteLine(("Create Random objects all with the same seed and "
            + "generate\nsequences of numbers with different "
            + "bounds. Note the effect\nthat the various " 
            + "combinations of bounds have on the sequences."));
        NoBoundsRandoms(234);
        UpperBoundRandoms(234, Int32.MaxValue);
        UpperBoundRandoms(234, 2000000000);
        UpperBoundRandoms(234, 200000000);
        BothBoundsRandoms(234, 0, Int32.MaxValue);
        BothBoundsRandoms(234, Int32.MinValue, Int32.MaxValue);
        BothBoundsRandoms(234, -2000000000, 2000000000);
        BothBoundsRandoms(234, -200000000, 200000000);
        BothBoundsRandoms(234, -2000, 2000);
    } //main
} //RandomNextDemo

/*
This example of the Random.Next( ) methods
generates the following output.

Create Random objects all with the same seed and generate
sequences of numbers with different bounds. Note the effect
that the various combinations of bounds have on the sequences.

Random object, seed = 234, no bounds:
 2091148258  1024955023   711273344  1081917183  1833298756   109460588

Random object, seed = 234, upper bound = 2147483647:
 2091148258  1024955023   711273344  1081917183  1833298756   109460588

Random object, seed = 234, upper bound = 2000000000:
 1947533580   954563751   662424922  1007613896  1707392518   101943116

Random object, seed = 234, upper bound = 200000000:
  194753358    95456375    66242492   100761389   170739251    10194311

Random object, seed = 234, lower = 0, upper = 2147483647:
 2091148258  1024955023   711273344  1081917183  1833298756   109460588

Random object, seed = 234, lower = -2147483648, upper = 2147483647:
 2034812868   -97573602  -724936960    16350718  1519113864 -1928562472

Random object, seed = 234, lower = -2000000000, upper = 2000000000:
 1895067160   -90872498  -675150156    15227793  1414785036 -1796113767

Random object, seed = 234, lower = -200000000, upper = 200000000:
  189506716    -9087250   -67515016     1522779   141478503  -179611377

Random object, seed = 234, lower = -2000, upper = 2000:
       1895         -91        -676          15        1414       -1797
*/

Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

.NET Framework

Supported in: 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 2.0, 1.0

XNA Framework

Supported in: 1.0

Community Additions

ADD
Show:
© 2014 Microsoft