2017-02-21 29 views
0

我必须检查给定范围是否可能为表达式a-b = c生成一个随机数。检查范围是否可以接受或不在表达式a-b = c

例如 的范围是1至9 B档位范围是1至9和 C范围内是10〜99

然后在这种情况下,我必须返回false。

我的登录是

if (((a.Min - b.Min) <= c.Max) && ((a.Max - b.Min) >= c.Min)) 
    return true; 
    else 
    return false; 

但这种情况在少数情况下失败。

任何人都可以帮助我。

+1

*这种情况在少数情况下失败* - 您可以发布这些情况吗? – RomanPerekhrest

+0

这是失败的条件像一个是101至999,B是1至9和C是10至99。 – user3483782

回答

0

我认为正确的条件应该是:

a.Max - b.Min <= c.Max 
a.Min - b.Max >= c.Min 

有了您的例子:A = [101,999],B = [1,9]

的分钟数,你可以得到的是: a.Min - b.Max = 101 - 9 = 92

的最大数量是:999 - 1 = 998

所以你的逻辑返回true当c = [92,998]或任何与分钟> 92 ,最大值为< 998,如[100,500]