C#中的随机函数

Amr*_*mra 2 c# function

在C#中选择两个数字之间的随机数的最佳方法是什么?

例如,如果我有一个23的低值和9999的高值,那么在这两个数字之间选择一个随机数是正确的代码是什么?提前致谢

Øyv*_*hen 12

像这样使用Random类:

Random rnd = new Random(); 
rnd.Next(23, 10000);
Run Code Online (Sandbox Code Playgroud)

确保只初始化你的rnd对象一次,以确保它真正为你生成随机值.

如果您进行此循环:

for( int i = 0 ; i < 10; i++ ){
  Random rnd = new Random();
  var temp = rnd.Next(23, 10000);
}
Run Code Online (Sandbox Code Playgroud)

temp每次都是相同的,因为相同的种子用于生成rnd对象,但是像这样:

Random rnd = new Random();
for( int i = 0 ; i < 10; i++ ){
  var temp = rnd.Next(23, 10000);
}
Run Code Online (Sandbox Code Playgroud)

它将生成10个唯一的随机数(但当然,偶然,两个或更多数字可能相等)


Mar*_*ers 7

这取决于您是在寻找整数还是双精度.对于整数使用Random.Next(minValue,maxValue):

返回指定范围内的随机数.

请注意,minValue是包含的,但maxValue是独占的.

在指定范围内选择随机双精度没有等效方法.相反,您应该使用NextDouble方法选取介于0.0和1.0之间的随机数,然后使用线性变换来扩展,缩小和/或转换范围.

  • 你的例子使它看起来像一个静态方法,因为随机的资本R.它有点混乱. (2认同)