在.NET中创建一个简单的随机数

时间:2013-03-13 14:17:23

标签: c# random

我需要一个简单的随机数作为我正在创建的循环,我不能为我的生活找出我在这里做错了什么。有人可以查看下面的代码并向我解释为什么它会给我以下错误:

  

错误1'System.Random.Next(int,最佳重载方法匹配)   int)'有一些无效的参数

     

错误2参数1:无法转换   从'十进制'到'整数'
  错误3参数2:无法转换   'decimal'到'int'

我试图从“数字上/下”控件中拉出范围的最小值和最大值。我会假设LINQ或C#会有一个简单的单行生成器,但我找不到它。

Random rnd1 = new Random();
var integer = rnd1.Next(numericUpDown_RandomMin.Value, 
                                                  numericUpDown_RandomMax.Value);
textbox.Text = integer.ToString();

5 个答案:

答案 0 :(得分:2)

好吧,首先numericUpDown_RandomMin.Value..._RandomMax.Value不是int,所以你可能需要投射:

var integer = rnd1.Next((int)numericUpDown_RandomMin.Value, (int)numericUpDown_RandomMax.Value);

除此之外,你得到了什么错误?

答案 1 :(得分:2)

NumericUpDown是小数,您需要转换为int。

var integer = rnd1.Next((int)numericUpDown_RandomMin.Value, (int)numericUpDown_RandomMax.Value);

答案 2 :(得分:2)

Random.Next需要两个Int32值,但NumericUpDown.Value属性为decimal。由于从decimal转换为int会失去一些值精度,因此您必须明确地执行此操作:

rnd1.Next((int)numericUpDown_RandomMin.Value, (int)numericUpDown_RandomMax.Value);

答案 3 :(得分:2)

NumericUpDown.Value返回小数,而Next()接受整数。您可能希望先将其转换为整数:

var integer = rnd1.Next((int)numericUpDown_RandomMin.Value, (int)numericUpDown_RandomMax.Value);

答案 4 :(得分:1)

由于NumericUpDown.Value的返回类型为Decimal,您需要明确numericUpDown_RandomMin.ValuenumericUpDown_RandomMax.Value值转换为Int32因为Random.Next(Int32, Int32)将两个参数作为Int32。等;

Random rnd1 = new Random();
var integer = rnd1.Next((int)numericUpDown_RandomMin.Value, (int)numericUpDown_RandomMax.Value);
textbox.Text = integer.ToString();