используя SQL-запрос ...ORDER BY random() LIMIT 1
вывожу рандомную запись из таблицы.
на удивление, но как-то уж слишком часто выводится то, что уже выводилось.
например, запросив рандомную запись 100 раз
в этой сотни будет как минимум пара-тройка повторяющихся.
Это норма? Мне просто казалось, что существует не такая уж и большая вероятность попасть на одно и тоже за столь короткий промежуток.
просьба ногами не пинать, и помидорами не забрасывать. Учусь.
p.s. проверил базу на дубли. Такого нет.
Помечай уже выданные
А не лучше ли select * from ... WHERE id = random?
Ну, во первых почитай что за алгоритм заложен в random(), во вторых да, выборка небольшая, коллизии вполне могут быть
Возможно у вас неправильные представления о случайности
Этого я не исключаю)
Думал об этом. Пометил себе этот вариант. Но думаю вернуться к нему, как к последнему, если ничего более просто не найду.
вот это неплохой вариант
Посчитай вероятность повтора и сравни
Формула бернулли - можешь посчитать, но вообще это мало вероятно
p = 1 for i in range (4400, 4500): p *= (i/4500) получается всего 32% что все 100 элементов будут уникальные
Обсуждают сегодня