【问题标题】:Random numbers with decimals [duplicate]带小数的随机数[重复]
【发布时间】:2014-02-26 16:06:03
【问题描述】:

我是 C# 的初学者,我创建了这个程序来生成 7 个随机数并在控制台中显示它们。但现在我想生成 18.0-23.5 范围内的小数。 但我不知道怎么做?我试过Next.Double,但我无法让它工作。请帮忙!

这是我的程序:

int lotto1 = 0, lotto2 = 0, lotto3 = 0, lotto4 = 0, lotto5 = 0, lotto6 = 0, lotto7 = 0;
Random rnd = new Random();

Console.WriteLine("Din lottorad är:");
lotto1 = rnd.Next(1, 36);
Console.WriteLine("Nr1: " + lotto1);
lotto2 = rnd.Next(1, 36);
Console.WriteLine("Nr2: " + lotto2);
lotto3 = rnd.Next(1, 36);
Console.WriteLine("Nr3: " + lotto3);
lotto4 = rnd.Next(1, 36);
Console.WriteLine("Nr4: " + lotto4);
lotto5 = rnd.Next(1, 36);
Console.WriteLine("Nr5: " + lotto5);
lotto6 = rnd.Next(1, 36);
Console.WriteLine("Nr6: " + lotto6);
lotto7 = rnd.Next(1, 36);
Console.WriteLine("Nr7: " + lotto7);

【问题讨论】:

标签: c# random decimal


【解决方案1】:

使用NextDouble:

 rnd.NextDouble() * (23.5-18.0) + 18.0

或更笼统地说:

public double NextDouble(Random rnd, double min, double max)
{
    return rnd.NextDouble() * (max-min) + min;
}

【讨论】:

  • 你也可以把NextDouble( Random, double, double )方法变成一个扩展方法,这样它就可以像rnd.NextDouble( 18.0, 23.5 )一样使用。
  • 按照凯尔的建议,方法签名将是public static double NextDouble(this Random rnd, double min, double max)
猜你喜欢
  • 1970-01-01
  • 2014-03-22
  • 1970-01-01
  • 2014-05-18
  • 2011-05-21
  • 1970-01-01
  • 1970-01-01
  • 2012-07-19
  • 1970-01-01
相关资源
最近更新 更多