There is no need for the RBAR of a function to generate random integer values. The only reason you think so is because you found out that RAND returns the same number throughout a given single select. The following code produces 500 random integers from 10 to 100 across many rows in a single return as an example...
DECLARE @MinValue INT , @MaxValue INT , @Quantity INT
SELECT @MinValue = 10, @MaxValue = 100, @Quantity = 500
SELECT TOP (@Quantity)
ABS(CHECKSUM(NEWID()))%(@MaxValue-@MinValue+1)+@MinValue
FROM Master.sys.SysColumns sc1
--Jeff Moden
Change is inevitable... Change for the better is not.