Dựa trên logic / mã tuyệt vời từ mathematix và scottyc, tôi gửi:
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
Mặc dù việc chuyển từ hàm MIN của scottyc sang hàm MAX rõ ràng đối với tôi, nhưng không phải vậy, vì vậy tôi đã giải quyết nó và đưa nó vào đây: SELECT @a + (ABS (@ b- @ a) + ( @ b- @ a)) / 2. Các số được tạo ngẫu nhiên, trong khi không phải là bằng chứng, ít nhất nên thuyết phục những người hoài nghi rằng cả hai công thức đều đúng.