C#随机数生成器-仅1或1?

C#随机数生成器-仅1或1?,c#,random,numbers,C#,Random,Numbers,如何使用随机数生成器生成1或-1,而不是0。到目前为止,我有:xFacingDirection=randomise.Next(-1,2)但这会有生成数字0的风险。我将如何使不接受0或继续尝试一个数字,直到它不是0 非常感谢这个怎么样: var result = random.Next(0, 2) * 2 - 1; 为了解释这一点,random.Next(0,2)只能生成0或1的值。当你把它乘以2,它给出0或2。然后简单地减去1得到-1或1 通常,要随机生成n个整数中的一个,均匀分布在最小值x和

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

非常感谢

这个怎么样:

var result = random.Next(0, 2) * 2 - 1;
为了解释这一点,
random.Next(0,2)
只能生成0或1的值。当你把它乘以2,它给出0或2。然后简单地减去1得到-1或1

通常,要随机生成n个整数中的一个,均匀分布在最小值x和最大值y(包括x和y)之间,可以使用以下公式:

var result = random.Next(0, n) * (y - x) / (n - 1) + x;
例如,替换n=4、x=10和y=1将生成集合{1、4、7、10}中的随机数。

您还可以使用a来确定要使用的数字

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

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

这是我的实现。与上述内容类似,但略有不同。想一想更多的答案会对你有更多的帮助

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