ps: так или иначе — в течение двух минут запускал свой код автоматически (получилось около 300 запусков), так и не смог получить отношение в 0.97 как у вас. Непруха :-(
Решение в топике гарантирует поочередную выдачу тестовых ячеек.
Я с вами соглашаюсь, что база там не нужна, но если нужна гарантированная поочередная выдача ячеек, то решение с равномерной выдачей не годится, по определению.
Если есть задача гарантированно выдавать «не то, что было последнему», то без персистентого хранилища вы не обойдётесь никак. Модуль nginx распределяет пользователей согласно выбранных вероятностей и не гарантирует, что каждому последуюшему посетителю будет выдано не то, что предыдущему.
Я понимаю, что в реальной жизни такое требование вряд ли будет, но просто решения не эквивалентны. И если требование изменить на стандартные вероятности — тогда получим тот же самый rand() + сессию.
Т.е. создание хэша у вас операция бесплатная?
Т.е. вы не знаете, как работают индексы в субд, но при этом даёте задания на знание субд?
Существительные же
должна быть?
twitter.com/KentBeck/status/333010369540915200
Хехе, а автор — оптимист!
Позапускайте и посмотрите на эту цифру теперь
> незначительно
Значительно. Разница между вызовом rand() и Выполнением SQL + DML огромна.
ideone.com/3F6aO2
Я с вами соглашаюсь, что база там не нужна, но если нужна гарантированная поочередная выдача ячеек, то решение с равномерной выдачей не годится, по определению.
$results = array('A' => 0, 'B' => 0); $i = 1000; while ($i--) { $results[ mt_rand(1, 100) > 50 ? 'A' : 'B' ]++; } var_dump($results);Я понимаю, что в реальной жизни такое требование вряд ли будет, но просто решения не эквивалентны. И если требование изменить на стандартные вероятности — тогда получим тот же самый rand() + сессию.