Mathematix ve scottyc'den parlak mantık / kod üzerine inşa ediyorum:
DECLARE @a INT, @b INT, @c INT = 0
WHILE @c < 100
BEGIN
SET @c += 1
SET @a = ROUND(RAND()*100,0)-50
SET @b = ROUND(RAND()*100,0)-50
SELECT @a AS a, @b AS b,
@a - ( ABS(@a-@b) + (@a-@b) ) / 2 AS MINab,
@a + ( ABS(@b-@a) + (@b-@a) ) / 2 AS MAXab,
CASE WHEN (@a <= @b AND @a = @a - ( ABS(@a-@b) + (@a-@b) ) / 2)
OR (@a >= @b AND @a = @a + ( ABS(@b-@a) + (@b-@a) ) / 2)
THEN 'Success' ELSE 'Failure' END AS Status
END
Her ne kadar scottyc'in MIN işlevinden MAX işlevine atlamak benim için açık olmalıydı, öyle değildi, bu yüzden çözdüm ve buraya dahil ettim: SELECT @a + (ABS (@ b- @ a) + ( @ b- @ a)) / 2. Rastgele üretilen sayılar, kanıt olmasa da, en azından her iki formülün de doğru olduğu konusunda şüpheleri ikna etmelidir.