我正在编写一个随机问题生成器。我想从每个部分中挑选一个问题。
使用DateTime.Now.Milliseconds作为种子值的随机类生成随机数,如果范围大于2(0,2 / 2 +)。但是,如果我在该范围内给出0和最大值1的最小值,它总是返回0。
我错误地使用它。
请建议是否有其他选择。
谢谢, 马赫什
答案 0 :(得分:16)
你正在调用Random.Next
,它返回一个大于或等于第一个参数的随机整数,小于但不等于第二个参数。
具体来说,您要求的是[0, 1)
范围内的整数,该整数只能为零。
如果您要查找0
或1
的整数,则需要致电Random.Next(0, 2)
。
如果您要查找0
和1
之间的实数,则需要致电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));
}