我如何使用随机数生成器生成1或-1但不生成0.我到目前为止:xFacingDirection = randomise.Next(-1,2);
但是存在生成数字0的风险。我该如何处理不接受0或继续尝试数字,直到它不是0。
非常感谢
答案 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;
}