C#随机数发生器-1还是1?

时间:2014-04-29 00:59:31

标签: c# random numbers

我如何使用随机数生成器生成1或-1但不生成0.我到目前为止:xFacingDirection = randomise.Next(-1,2);但是存在生成数字0的风险。我该如何处理不接受0或继续尝试数字,直到它不是0。

非常感谢

3 个答案:

答案 0 :(得分:16)

这个怎么样:

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}。

答案 1 :(得分:1)

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

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

评估为

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

答案 2 :(得分:0)

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

    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;
    }