我如何在一个范围内产生随机数?
喜欢的东西:
var rnd = new Random(DateTime.Now.Millisecond); int ticks = rnd.Next(0, 3000);
你可以试试
//for integers Random r = new Random(); int rInt = r.Next(0, 100); //for doubles int range = 100; double rDouble = r.NextDouble()* range;
看一看
随机类, 随机的。下一个方法(Int32, Int32)和随机的。NextDouble方法
使用:
Random r = new Random(); int x= r.Next(10);//Max range
除了生成整数和双精度精度的随机类,考虑:
Stack Overflow question 生成(U)Int64和Decimal的(伪)随机约束值
c# RandomProvider Class
试试下面的代码。
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
对于未来的读者,如果你想要一个范围内的随机数,请使用以下代码:
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)
c#在最小值和最大值之间的随机双精度
代码样本 .
这里是Darrelk回答的更新版本。 它是使用c#扩展方法实现的。 每次调用此方法时,它都会执行不分配内存 (新的随机())
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);