1

有没有办法获取一个数字并使用一些数学运算,将其转换为两个数字之间的范围,例如 [LB,UB]。我知道我可以做一些事情,比如x = x % UB0-UB. 但是我怎么得到它,所以它在 LB-UB 之间。我试过x = (x % UB) + LB了,但我不知道如何确保添加 LB 后 x 不会超过 UB。

4

3 回答 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 回答