我如何在一个范围内产生随机数?


当前回答

对于未来的读者,如果你想要一个范围内的随机数,请使用以下代码:

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

用法:

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

最小值和最大值之间的随机双精度

代码示例

其他回答

对于未来的读者,如果你想要一个范围内的随机数,请使用以下代码:

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

用法:

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

最小值和最大值之间的随机双精度

代码示例

试试下面的代码。

Random rnd = new Random();
int month = rnd.Next(1, 13); // creates a number between 1 and 12
int dice = rnd.Next(1, 7); // creates a number between 1 and 6
int card = rnd.Next(52); // creates a number between 0 and 51

以下是Darrelk回答的更新版本。 它是使用c#扩展方法实现的。 它不会在每次调用此方法时分配内存(new Random())。

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

用法(确保导入包含RandomExtensionMethods类的命名空间):

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);

除了生成整数和双精度精度的随机类,考虑:

生成(U)Int64和Decimal的(伪)随机约束值 c#随机提供程序类

Use:

Random r = new Random();
 int x= r.Next(10);//Max range