【问题标题】:.NET Random Class picking always 0 when range is 0 or 1当范围为 0 或 1 时,.NET 随机类选择始终为 0
【发布时间】:2010-11-30 12:43:28
【问题描述】:

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

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

我是不是用错了。

如果有其他选择,请提出建议。

谢谢, 马赫什

【问题讨论】:

    标签: .net random


    【解决方案1】:

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

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

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

    【讨论】:

    • 如果你要转换Java方法Math.random,那么你需要有两行。随机 r = new Random(); r.NextDouble();
    【解决方案2】:

    阅读 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
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-01
        • 2017-01-11
        • 2021-08-01
        • 1970-01-01
        • 2014-03-02
        • 2020-02-12
        • 2016-02-09
        相关资源
        最近更新 更多