Here's an interesting twist:
SELECT TOP (100) ABS(CHECKSUM(NEWID())) % 100
FROM dbo.syscolumns
WHERE ABS(CHECKSUM(NEWID())) % 100 BETWEEN 1 AND 5
Notice that the values returned are way outside the range 1..5 since the NEWID() function generates a new unique identifier every time it's invoked, in both the SELECT clause and the WHERE clause of the same statement. 🙂