Проблема, с которой я иногда сталкиваюсь с выбранным «Ответом», заключается в том, что распределение не всегда четное. Если вам нужно очень равномерное распределение случайных чисел от 1 до 14 среди большого количества строк, вы можете сделать что-то вроде этого (моя база данных имеет 511 таблиц, так что это работает. Если у вас меньше строк, чем у диапазона случайных чисел, это не работает хорошо):
SELECT table_name, ntile(14) over(order by newId()) randomNumber
FROM information_schema.tables
Этот тип противоположен нормальным случайным решениям в том смысле, что он поддерживает последовательность чисел и рандомизирует другой столбец.
Помните, у меня есть 511 таблиц в моей базе данных (что относится только к тому, что мы выбираем из информационной_схемы). Если я беру предыдущий запрос и помещаю его во временную таблицу #X, а затем запускаю этот запрос для полученных данных:
select randomNumber, count(*) ct from #X
group by randomNumber
Я получаю этот результат, показывая, что мое случайное число ОЧЕНЬ равномерно распределено по множеству строк: