Purpose of Random class in C#
A few main points about the Random class:
- The Random class represents pseudo-number generator.
- A mathematical algorithm is used for generating a random number.
- The random class uses the modified version of Donald E. Knuth’s subtractive random number generator algorithm.
- You may use the Random class after including the reference for the System namespace.
An example of generating a random number
In this example, five int (byte) numbers are generated randomly.
- First, a byte-type array is declared with four elements.
- Then, a random object is created and NextBytes method of the Random class is used to generate four random numbers.
- Finally, we used a foreach loop to display the random numbers as follows:
using System; class Random_Example { static void Main() { Random rand = new Random(); byte[] randBytes = new byte[4]; rand.NextBytes(randBytes); Console.WriteLine("Generated Numbers Are:"); foreach (byte randVal in randBytes) Console.Write("{0, 4}", randVal); Console.ReadLine(); } }
The output as I executed this code:
The numbers should vary as you execute this code every time.
Using the Next method for generating int random numbers within a range
The following example shows using the Next method of the Random class and generating random numbers based on provided ranges.
For example, the first random number is generated between 1 – 100. The second is between 100 to 400 while the fourth is from 1000 to 10000.
The Code:
using System; class Random_Num_Next { static void Main() { Random rand = new Random(); Console.WriteLine("The Generated Random Numbers Are: \n"); Console.WriteLine(rand.Next(1, 100)); Console.WriteLine(rand.Next(100, 500)); Console.WriteLine(rand.Next(501, 1000)); Console.WriteLine(rand.Next(1000, 10000)); Console.ReadLine(); } }
The example of creating double-type random numbers
In the example below, we have an array of the double type with three elements.
The NextDouble method of the Random class is used as follows:
using System; class Random_Example { static void Main() { Random dbl_rand = new Random(); double[] arr_rand_dbl = { dbl_rand.NextDouble(), dbl_rand.NextDouble() , dbl_rand.NextDouble() }; Console.WriteLine("Generated Double Random Numbers:\n"); foreach (double rand_result in arr_rand_dbl) { Console.WriteLine(rand_result); } Console.ReadLine(); } }
You may also use:
dbl_rand.NextDouble() + 1,
dbl_rand.NextDouble() – 2,
dbl_rand.NextDouble() + 3
That means you may also specify a number if you want to get the random number bigger or smaller.
An example of generating five random numbers within a range
The following example shows generating ten random numbers within the range of 1 and 1000. A for loop is used for that purpose as shown below:
using System; class Random_Example_Ten { static void Main() { Random range_rand = new Random(); Console.WriteLine("Ten Random Numbers \n"); for (int x = 1; x <= 10; x++) Console.Write(range_rand.Next(1, 1000) + "\n"); Console.ReadLine(); } }
The output as this code is executed:
Generating ten random floating numbers
This example shows generating ten floating random numbers by using the NextDouble() method in the for loop. The random numbers are within the range of 1 and 4:
using System; class Random_Example_Ten_Float { static void Main() { Random range_rand_dbl = new Random(); Console.WriteLine("Ten Random Floating Numbers \n"); for (int z = 1; z <= 10; z++) Console.Write(range_rand_dbl.NextDouble() * 4 + "\n"); Console.ReadLine(); } }