2014-04-29 35 views
3

我怎麼去使用一個隨機數發生器來產生1或-1,但不是0.我到目前爲止:xFacingDirection = randomise.Next(-1,2);,但運行產生數字0的風險。我會如何去做不接受0或保存努力了數量,直到其不爲0C#隨機數發生器只有-1或1嗎?

非常感謝

回答

14

這個怎麼樣:

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

爲了解釋這一點,random.Next(0, 2)只能當你乘上產生的0或1的值。由2,它給出0或2.並簡單地減去1得到-1或1

通常,爲了隨機地產生的Ñ整數之一,均勻的X最小值和最大值之間分佈ÿ,包容,可以使用以下公式:

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

例如代ñ = 4,X = 10,和ÿ = 1將在集{1,4,7,10}生成randum號碼。

+0

簡單的數學,謝謝! –

1

您也可以使用ternary operator來確定使用哪個數字。

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

它的計算結果爲

if (random.Next(0, 2) == 1) 
    number = 1; 
else 
    number = -1; 
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; 
    }