Produce a random number in a range using C#

Viewed 502912

How do I go about producing random numbers within a range?

7 Answers

For future readers if you want a random number in a range use the following code:

public double GetRandomNumberInRange(Random random,double minNumber, double maxNumber)
{
    return random.NextDouble() * (maxNumber - minNumber) + minNumber;
}

usage:

Random r = new Random();    
double num1 = GetRandomNumberInRange(r, 50, 100)

C# Random double between min and max

Code sample

Here is updated version from Darrelk answer. It is implemented using C# extension methods. It does not allocate memory (new Random()) every time this method is called.

public static class RandomExtensionMethods
{
    public static double NextDoubleRange(this System.Random random, double minNumber, double maxNumber)
    {
        return random.NextDouble() * (maxNumber - minNumber) + minNumber;
    }
}

Usage (make sure to import the namespace that contain the RandomExtensionMethods class):

var random = new System.Random();
double rx = random.NextDoubleRange(0.0, 1.0);
double ry = random.NextDoubleRange(0.0f, 1.0f);
double vx = random.NextDoubleRange(-0.005f, 0.005f);
double vy = random.NextDoubleRange(-0.005f, 0.005f);
Related