feat(generator): день-функция — трафик, визиты и просмотры страниц #49
@@ -7,6 +7,33 @@
|
|||||||
События уже есть: день-функция отдаёт по паре (зерно, D) упорядоченный поток
|
События уже есть: день-функция отдаёт по паре (зерно, D) упорядоченный поток
|
||||||
pageview. Торговые события и запуск снаружи — за следующими тикетами.
|
pageview. Торговые события и запуск снаружи — за следующими тикетами.
|
||||||
|
|
||||||
|
## Как это работает
|
||||||
|
|
||||||
|
> Раздел черновой. По сути он верен, но на понятность читателем со стороны не
|
||||||
|
> выверен: пишет его тот, кто держит устройство генератора в голове, а это
|
||||||
|
> худший судья понятности. Выверка — вместе с путеводителем, тикет #48.
|
||||||
|
|
||||||
|
Цепочка одна и всегда та же: корневое зерно → подпотоки по позиции в дереве
|
||||||
|
→ когорта дня (кто впервые пришёл, сколько раз вернётся, чей паспорт какой)
|
||||||
|
→ аудитория дня, то есть когорта плюс возвраты когорт окна → визиты этих кук
|
||||||
|
→ строки событий. Мир при этом ленив: когорта считается по требованию, а до
|
||||||
|
D0 живёт предыстория, поэтому любой день собирается сам по себе — прожитая
|
||||||
|
история для него не нужна и на него не влияет.
|
||||||
|
|
||||||
|
Главное правило для того, кто придёт следующим: **внутри подпотока порядок
|
||||||
|
бросков — часть контракта.** Броски раздаёт один генератор подряд, и k-й
|
||||||
|
бросок достаётся тому, кто спросил k-м. Приписать новый бросок в конец
|
||||||
|
функции безопасно: у прежних он ничего не отнимает. Вставить в середину —
|
||||||
|
значит сдвинуть все броски после него, а с ними и весь мир: события того же
|
||||||
|
дня станут другими, счётчики канонического мира разойдутся с манифестом, и
|
||||||
|
поймается это не ошибкой, а красным чеком. Ровно поэтому паспорта кук в
|
||||||
|
`plan.cohort` бросаются последними.
|
||||||
|
|
||||||
|
Случайность целочисленная — только диапазоны и выбор по целым весам: готовые
|
||||||
|
распределения numpy расходятся между версиями и архитектурами, а обещано
|
||||||
|
побайтовое совпадение (спека, раздел 2). Отсюда `weights.py` вместо
|
||||||
|
`rng.choice` с вероятностями.
|
||||||
|
|
||||||
## Что где лежит
|
## Что где лежит
|
||||||
|
|
||||||
- `src/clickstream_generator/world.py` — конфигурация мира: все его числа
|
- `src/clickstream_generator/world.py` — конфигурация мира: все его числа
|
||||||
|
|||||||
Reference in New Issue
Block a user