Соунь

Неделя Самайна

К Хэллоуину-Самайну загрузила на сайт картинок-жутиков (открыть и пролистать вниз).
Если вы давно хотели поработать со своими страхами через метафоры, там этих метафор сейчас - завались!
Некоторые картинки пробирают до жути.
Во второй половине ноября уберу.

Спасибо! Не знаю, все ли посмотрела, но перезагружала раз двадцать. Пугает одна, и да, понятно, почему.
Зато остальные, почти все, создают ощущение простора. Как будто стоишь поздней осенью под хмурым ночным небом. Мне нравится.
Открываю, прокручиваю - и ничего не нахожу (
Возможно, просто не распознали. Они действительно некоторые ну совсем на крипоту не тянут.
http://julia-house.ru/img/random/{1-30}.jpg
Лодин, я понимаю, что ты это умеешь в можешь. Но мой сайт - это кусочек моего дома. Пожалуйста, не взламывай его, даже если тебе это не составляет труда, просто из какой-нибудь мотивации типа вежливости, уважения, что-нибудь такое странное, можешь сам придумать, что лучше сюда подойдёт.
Мне неприятно.
Да я ничего и не ломал, просто нашёл эээ... Более удобный интерфейс доступа к тому же контенту.
Ok, без этой ссылки я не понимал, что там каждый раз подгружается отдельная картинка.
У меня из текста в посте сложилось впечатление, что должен при прокрутке сайта вниз открываться сразу весь набор картинок.
:) Просто я уже не первый раз пишу в своём ЖЖ про эту страничку рандомной выдачи картинок, поэтому не повторялась про механизм выдачи. Хорошо, что комментарий Лодина помог разобраться.

Edited at 2019-10-28 03:50 pm (UTC)
Тут ещё дело в том, что мы все любопытные :-) и, узнав, что картинка на самом деле не одна, сразу хотим посмотреть, а что же ещё дают есть. И практически сразу встаёт вопрос "а как?" Причём, тривиальный ответ F5 не устроит ищущую натуру, обладающую хотя бы минимальным представлением о теории вероятностей и вот почему. Если для выдачи картинки используется чистый рандом (без контроля предыстории), то с какого то момента картинки будут повторяться, и произойдёт это заметно раньше, чем успеешь просмотреть все. Тогда вопрос - а сколько раз надо обновить страницу, чтобы все посмотреть? Ответ для равновероятной выдачи выглядит так:

Это вероятность p увидеть все картинки в зависимости от количества обновлений страницы k при условии, что всего картинок 30.
Т.е. чтобы с вероятностью 95% посмотреть все 30, нужно около 200 обновлений. При этом, естественно, какие-то картинки просмотришь многократно (что не эффективно :-) и, главное, долго).
Вот и хочется ссылку на всю галерею :-)
Ну-ка, ну-ка, как считали? У меня график выглядит слегка не так, и линейный кусок в начале сильно смущает - очевидно, что P(k<30) = 0, да и P(30) = (1/30)^30, что глазу должно быть не видно...
У меня картинка получилась чуть иная, вполне возможно, что это у Вас рендер какой-то жульнический, но интересно же, почему так.

Sanity check:
Я строил вероятности для этой версии coupon collector-a (аналитическое решение для этой задачи, кстати, не то чтоб прям входило в элементарный курс теорвера) "в лоб", рекурсивно.
В обозначениях m = всего уникальных вариантов, k = количество уникальных вариантов, которые мы уже видели и n = количество обновлений страницы, очевидно:
p((0, k) | k > 0) = 0
p((n, 0) | n > 0) = 0
p(0, 0) = 1
И дальше
p(n, k) = p(n-1, k-1)*(m-k+1)/m + p(n-1, k)*k/m
Вот график:
Coupon collector problem, now with page refreshes
Результат вроде как не меняется, но возле нуля и единицы выглядит больше похожим на правду.

А в остальном да, спасибо за замечание - если картинки хочется показать миру, то надо что-то другое выдумывать. В среднем даже действуя из бытовых соображений люди сдаются раньше, и или сдаются, или... оптимизируют процесс ,)
Ох... это всё лень-матушка :-) Рекурсивно - это правильно, но долго (ещё ведь и с ветвлением). Я считал аналитически и весьма-весьма приближённо. Строго говоря, это, конечно, не правильно. Но, как оказалось, ещё и не сильно ошибся. Приятно :-)
Поскольку диапазон значений по количеству обновлений был не известен, реально рассчитал количество обновлений как функцию от вероятности на диапазоне (0, 1) для 100 значений (отсюда потери хвостов - там просто точек нет). Убедился, что график иллюстрирует ключевой посыл, да и запостил :-)
IDIFTL чего уж :-)
Suspected as much :)
Что долго - это да, бо не векторизуется нифига. Про ветвление, правда, не очень понял - если имеется в виду кусок про инициализацию, то это всего один statement, остальное - однопроходный цикл по массиву. Для небольших значений (~<1000) лучше работает аппроксимация N(P=0.95) ~ 10m, поэтому на этом диапазоне там O(m^2), а неравенство Маркова даёт очень сильно завышенную оценку.
У меня считается где-то за секунду для m=250; если б я был математиком или, скажем, программистом, это решение было бы сильно плохим :). Но в силу того, что в исходной задаче это уже и так большой оверкилл, а другого масштаба задач жизнь пока, к счастью, не поставила, десять строк no-brainer кода оказались достаточны :)

Вообще, конечно, интересно сравнить аналитическую функцию с "честной" рекурсией.
Если не лень, то вот pastebin со слегка допиленной питоновской реализацией: https://pastebin.com/ehF5GbWx.
Тем, кто попадёт сюда через поиск: это приближённая, не точная формула :-)

p(m,n) = (1-((m-1)/m)**n)**m

легко оборачивается в n = n(p) которую я и считал

В жизни ситуации разные бывают, например
- билеты по ПДД содержат 800 вопросов (в полном варианте 1600)
- тренировка словарного запаса по иностранному языку может включать несколько сотен карточек



Edited at 2019-11-03 09:04 pm (UTC)
Да, получается на удивление близко. Для больших n это неудивительно, конечно, но уже для m=5 разница в пике всего лишь 10%. Для 30 residuals вот:


Для порядка 1000 рекурсия всё ещё работает за относительно вменяемое время, но тормозит, конечно. В свете вышеприведённого аналитическая формула куда круче, конечно; я ожидал по наивности большего расхождения. Попробую на досуге что ли теперь получить оценку на эту погрешность :)
Оно прекрасное. Думаю, я его сейчас к себе утащу!