There is a glitch to it .... In SQL Server you cannot use RAND(), NEWID() it will throw an error complaining about having some sort of Slide-Effecting function bla bla..
But there is a way around to it you can Create a View which calls that RAND() function and then use that view inside your Function definition.
View
CREATE VIEW vw_Rand_Value
AS
SELECT RAND() Rnd_Value
GO
Function for SQL Server 2008
CREATE FUNCTION get_random_state()
RETURNS VARCHAR(2)
BEGIN
DECLARE @Table TABLE(States VARCHAR(2), OrderID FLOAT)
INSERT INTO @Table (States,OrderID)
VALUES ('AZ', (SELECT * FROM vw_Rand_Value))
,('RI', (SELECT * FROM vw_Rand_Value))
,('VA', (SELECT * FROM vw_Rand_Value))
,('PA', (SELECT * FROM vw_Rand_Value))
,('LA', (SELECT * FROM vw_Rand_Value))
,('CA', (SELECT * FROM vw_Rand_Value))
DECLARE @Random_State VARCHAR(2);
SELECT TOP 1 @Random_State = States
FROM @Table
ORDER BY OrderID;
RETURN @Random_State;
END
Function for SQL Server 2012
CREATE FUNCTION get_random_state()
RETURNS VARCHAR(2)
BEGIN
DECLARE @rand int;
DECLARE @Random_State VARCHAR(2);
SELECT @rand = 1 + FLOOR(Rnd_Value * 6) FROM vw_Rand_Value
SET @Random_State = CHOOSE(@rand,'AZ','RI','VA','PA','LA','CA');
RETURN @Random_State;
END
Call Function
SELECT dbo.get_random_state()