【问题标题】:C# Random Number Generator -1 or 1 only?C# 随机数生成器 -1 还是 1?
【发布时间】:2014-06-14 17:54:37
【问题描述】:

我将如何使用随机数生成器来生成 1 或 -1 但不生成 0。到目前为止,我有:xFacingDirection = randomise.Next(-1,2); 但这冒着生成数字 0 的风险。我将如何去做接受 0 或继续尝试一个数字,直到它不是 0。

非常感谢

【问题讨论】:

    标签: c# random numbers


    【解决方案1】:

    这个呢:

    var result = random.Next(0, 2) * 2 - 1;
    

    为了解释这一点,random.Next(0, 2) 只能产生 0 或 1 的值。当您将其乘以 2 时,它会得到 0 或 2。只需减去 1 即可得到 -1 或 1。

    一般来说,要随机产生 n 个整数之一,均匀分布在最小值 x 和最大值 y 之间,包括在内,你可以使用这个公式:

    var result = random.Next(0, n) * (y - x) / (n - 1) + x;
    

    例如替换 n=4, x=10, 和 y=1 将在集合 { 1, 4 中生成随机数, 7, 10 }。

    【讨论】:

      【解决方案2】:

      您还可以使用ternary operator 来确定要使用的号码。

      int number = (random.Next(0, 2) == 1) ? 1 : -1);
      

      计算结果为

      if (random.Next(0, 2) == 1)
          number = 1;
      else
          number = -1;
      

      【讨论】:

        【解决方案3】:

        这是我的实现。与上述类似,但略有不同。想出更多答案可以帮助你更多。

            public int result()
            {
                // randomly generate a number either 1 or -1
                int i;
                Random rando = new Random();
                i = rando.Next(0, 2);
                if (i == 0)
                {
                    i = -1;
                }
                return i;
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-12-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多