После небольшого поиска и чтения документации ясно, что вы можете писать пользовательские функции в SQL Server, которые помечены как детерминированные или недетерминированные, в зависимости от того, какие встроенные инфузии используются в теле.
RAND() указан под недетерминированными функциями (см. msdn article). Так почему я не могу использовать его в функции?