У меня довольно простой SQL (MySQL):
SELECT foo FROM bar ORDER BY rank, RAND()
Я замечаю, что когда я обновляю результаты, случайность подозрительно слабая.
В выборке данных на данный момент имеется шесть результатов с одинаковым рангом (целое число ноль). Существует множество тестов на случайность, но вот простой, который можно выполнить вручную: при повторном запуске первый результат должен быть одинаковым в обоих запусках примерно в одной шестой части времени. Этого точно не происходит, ведущий результат один и тот же как минимум в трети случаев.
Мне нужно равномерное распределение по перестановкам. Я не эксперт в статистике, но я уверен, что ORDER BY RAND()
должен достичь этого. Что мне не хватает?
В MySQL SELECT rand(), rand()
показывает два разных числа, поэтому я не верю объяснению «один раз на запрос»