RAND in T-sql function Can  any one  tell why t-sql  not allowing using RAND function in side a function 

SELECT  CAST (RAND() * 10000000 as varchar(20))


the error is 

Invalid use of a side-effecting operator 'rand' within a function.
I found this at http://zarez.net/?p=2192 (author not immediately evident) - how to cheat around this.  RAND() may count as "a side-effecting operator" because it updates the seed-number that the RAND() function uses, ready to produce the next "random" number.  Here's the cheat:

CREATE VIEW Get_RAND
AS
SELECT RAND() AS MyRAND
GO


You can read a value from a view like that in a function, but maybe there's some deep reason not to... or on the other hand, maybe it was forbidden in the first place without a good reason?