当范围为0或1时,.NET随机类选取始终为0

时间:2010-11-30 12:43:29

标签: .net random

我正在编写一个随机问题生成器。我想从每个部分中挑选一个问题。

使用DateTime.Now.Milliseconds作为种子值的随机类生成随机数,如果范围大于2(0,2 / 2 +)。但是,如果我在该范围内给出0和最大值1的最小值,它总是返回0。

我错误地使用它。

请建议是否有其他选择。

谢谢, 马赫什

3 个答案:

答案 0 :(得分:16)

你正在调用Random.Next,它返回一个大于或等于第一个参数的随机整数,小于但不等于第二个参数。
具体来说,您要求的是[0, 1)范围内的整数,该整数只能为零。

如果您要查找01的整数,则需要致电Random.Next(0, 2)

如果您要查找01之间的实数,则需要致电Random.NextDouble

答案 1 :(得分:0)

在MSDN(Random.Next(int)Random.Next(int, int))上阅读,您将看到上限始终是独占的。也就是说,要获得0到1之间的数字(包括两者),您可以这样做:

Random prng = new Random();
Console.WriteLine(prng.Next(0, 2)); //2 because it is exclusive

答案 2 :(得分:0)

MSDN:Random.Next方法(Int32)返回小于指定最大值的非负数随机数。 使用它。

Random random = new Random();

for (int i = 0; i < 10; i++)
{
  Console.WriteLine("Genereted value:{0}", random.Next(2));
}