# Random Number Generation in C#

In this blog you will learn about random number generation in C#.

## Introduction

In this blog, I am going to explain the program of Random number generation in C#.

As per the Oxford Dictionary, random means: made, done or happening without method or conscious decision.

Random numbers are numbers that occur in a sequence so that two conditions are met: (1) It is impossible to predict future values based on past or present ones, and (2) the values are uniformly distributed over a defined interval or set. Random numbers are important in statistical analysis and probability theory.

We will be generating random numbers between two given numbers. Both numbers will be provided by the user along with the count value. Furthermore, random numbers will be generated equal to the count value.

For example:

10
35
How many random numbers do you want?
2
Random numbers between 10 and 35 are:
27
15

As seen, random numbers will be generated within the given range.

Software Requirements
• C#
Program
1. using System;
2. public class Random {
3.     private
4.     const int MBIG = int.MaxValue,
5.         MAXSEED = 161803398;
6.     private int inext, inextp;
7.     private readonly int[] SeedArray = new int[56];
8.     public Random() {
9.         int index, tempSeed1, tempSeed2, seed = Environment.TickCount;
10.         seed = (seed == int.MinValue) ? int.MaxValue : Math.Abs(seed);
11.         tempSeed1 = MAXSEED - seed;
12.         SeedArray[55] = tempSeed1;
13.         tempSeed2 = 1;
14.         for (int i = 1; i < 55; i++) {
15.             index = (21 * i) % 55;
16.             SeedArray[index] = tempSeed2;
17.             tempSeed2 = tempSeed1 - tempSeed2;
18.             if (tempSeed2 < 0) tempSeed2 += MBIG;
19.             tempSeed1 = SeedArray[index];
20.         }
21.         for (int j = 1; j < 5; j++) {
22.             for (int k = 1; k < 56; k++) {
23.                 SeedArray[k] -= SeedArray[1 + (k + 30) % 55];
24.                 if (SeedArray[k] < 0) SeedArray[k] += MBIG;
25.             }
26.         }
27.         inext = 0;
28.         inextp = 21;
29.     }
30.     public int RandomNumber(int minValue, int maxValue) {
31.         // condition check
32.         if (minValue > maxValue) {
33.             // throwing exception when minValue will be greater than maxValue
34.             throw new ArgumentOutOfRangeException("minValue should be lower than maxValue""");
35.         }
36.         // generating range from minValue and maxValue
37.         int range = maxValue - minValue;
38.         int retVal,
39.         locINext = inext,
40.             locINextp = inextp;
41.         if (++locINext >= 56) locINext = 1;
42.         if (++locINextp >= 56) locINextp = 1;
43.         retVal = SeedArray[locINext] - SeedArray[locINextp];
44.         if (retVal == MBIG) retVal--;
45.         if (retVal < 0) retVal += MBIG;
46.         // storing values in array
47.         SeedArray[locINext] = retVal;
48.         inext = locINext;
49.         inextp = locINextp;
50.         return (int)(retVal * (1.0 / MBIG) * range) + minValue;
51.     }
52.     static void Main() {
53.         int minValue, maxValue, count;
58.         Console.WriteLine("How many random numbers, Do u want");
60.         // creating object of the Random Class for accesing the FRandomNumber Method
61.         Random random = new Random();
62.         Console.WriteLine(\$ "Random numbers between {minValue} and {maxValue} are");
63.         for (int i = 0; i < count; i++) {
64.             // calling the RandomNumber Method
65.             var output = random.RandomNumber(minValue, maxValue);
66.             Console.WriteLine(output);
67.         }
69.     }
70. }
Now run the code.

Output of the first execution:

Output of the second execution:

Note

When another person tests with the same inputs, they will receive a different output, as random numbers cannot produce the same output every time. We will even get different results on the same computer.

Thank you so much for reading my blog. In my next blog, we will be talking about checked and unchecked keywords.