SELECT ABS(RANDOM() % N)
и
SELECT ABS(RANDOM()) % N
оба имеют тенденцию давать желаемый результат.
На мой взгляд, вторая более читаема.Сначала мы псевдослучайно выбираем целое число, затем применяем ABS (), чтобы убедиться, что оно неотрицательное, а затем по модулю N выбираем соответствующий диапазон.
Однако первый метод более надежен.Второй метод имеет очень низкий, но ненулевой риск выброса целочисленного переполнения, как отмечено в NullUserException.