базе и O(1) прямых обращений по айдишнику. Я согласен, что условий задачи мало и адекватного решения тут нет с использованием рандомизатора из БД, так что обсуждаемо и то и другое
Давай считать твои запросы) первый - ты узнаешь максимальный id, второй - запрашиваешь объект по ид, дальше н раз повторяешь этот запрос пока не получишь валидный результат, плюс к этому генеришь случайное число, тратишь время на обработку исключений, где константа твоя?
Если вот так узнавать максимальный id: Model.objects.aggregate(Max('pk')), то это O(1) в кластеризованных базах, далее пробую случайные числа, что тоже O(1) — best case: O(1), worst case: неопределён, но может быть в пределах O(n)
ну то есть worst case O(n) против O(log(n))?)
Обсуждают сегодня