使用C#在一个范围内生成一个随机数

时间:2010-10-20 06:34:29

标签: c# .net random

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

7 个答案:

答案 0 :(得分:358)

你可以尝试

Random r = new Random();
int rInt = r.Next(0, 100); //for ints
int range = 100;
double rDouble = r.NextDouble()* range; //for doubles

看看

Random ClassRandom.Next Method (Int32, Int32)Random.NextDouble Method

答案 1 :(得分:32)

尝试以下代码。

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

答案 2 :(得分:31)

类似的东西:

var rnd = new Random(DateTime.Now.Millisecond);
int ticks = rnd.Next(0, 3000);

答案 3 :(得分:11)

使用:

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

答案 4 :(得分:7)

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

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

C# Random double between min and max

Code sample

答案 5 :(得分:3)

除了生成整数和双精度的Random Class之外,请考虑:

答案 6 :(得分:0)

这里是Darrelk answer的更新版本。 使用C# extension methods实现。 每次调用此方法时,它不会不分配内存新的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);