2013-11-04 35 views
1

有沒有辦法取一個數字並使用一些數學,將其轉換爲兩個數字之間的範圍,如[LB,UB]。我知道我可以使用x = x % UB之間的數字來獲得0-UB之間的數字。但是我怎樣才能知道它是在LB-UB之間。我試過x = (x % UB) + LB,但我無法弄清楚如何確保x一旦添加LB就不會超過UB。使用數學獲得一個範圍內的數字

+1

'Num%(UB - LB)+ LB' – WhozCraig

回答

6

如何(x % (UB-LB)) + LB

你剛剛得到的範圍內的MOD和下界移動的號碼。

請注意,如果包含在內,您可能需要添加一個到範圍(UB-LB+1)。即如果LB = 10且UB = 20,則使用上述公式,則可以得到10至19的數字。這是普通模式的工作方式。

在閉區間[LB,UB]你只需加1國防部範圍:

(x % (UB-LB+1)) + LB

+0

您需要在模數中加一以得到問題中指定的封閉範圍。 (或者將規範更改爲半開放範圍,這對於C++程序員來說不會那麼令人頭疼)。 –

+0

已更新的答案以反映這兩種情況。 – Jaime

0

這將工作

x = x % (UB - LB) + LB 
1

嘗試

x = (x % (UB - LB +1)) + LB 

你所做的是你測量你想要得到你的號碼的時間間隔(UB - LB + 1)或忘記+1如果你不想讓UB出來。這是您擁有的選項數量。然後添加LB,以便他的結果在正確的範圍內。

即使對於負數,只要UB> LB即可。

相關問題