有没有办法获取一个数字并使用一些数学运算,将其转换为两个数字之间的范围,例如 [LB,UB]。我知道我可以做一些事情,比如x = x % UB
在0-UB
. 但是我怎么得到它,所以它在 LB-UB 之间。我试过x = (x % UB) + LB
了,但我不知道如何确保添加 LB 后 x 不会超过 UB。
问问题
223 次
3 回答
6
怎么样(x % (UB-LB)) + LB
您只需获取范围的 mod 并将数字移动下限。
请注意,如果包含,您可能需要在范围内添加一个(UB-LB+1)
。即如果 LB = 10 且 UB = 20,则使用上述公式,您将得到 10 到 19 的数字。这就是常规模组的工作方式。
对于封闭范围 [LB, UB],您只需将 1 添加到 mod 范围:
(x % (UB-LB+1)) + LB
于 2013-11-04T16:56:43.647 回答
1
尝试
x = (x % (UB - LB +1)) + LB
您所做的是测量您想要输入号码的间隔,或者如果您不想让 UB 退出,则(UB - LB + 1)
忘记。+1
这是您拥有的选项数量。然后添加LB
,使他的结果在正确的范围内。
这甚至适用于负数,只要 UB > LB。
于 2013-11-04T16:58:50.317 回答
0
这会起作用
x = x % (UB - LB) + LB
于 2013-11-04T16:58:20.313 回答