You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
git clone https://github.com/hololotl/customappTest.git
cd customappTest/cmd
go run . -rtp=0.6
Репорт по тестовому заданию
У нас есть последовательность клиента: $L1 = {x_1, x_2, x_3 .... x_n}$
Есть последовательность наших мультипликаторов $L2 = {m_1, m_2, m_3 ..... m_n}$
После преобразования у нас получается последовательность $L3 = {y_1, y_2, y_3 .... y_n}$ или же
${x_i * I(m_i > x_i )}$ для всех i от 1 до n
Rtp на стороне клиента равен $sum1/n$
или же среднее число в последовательности L3 при достаточно большом n
Rtp на стороне клиента можно записать как $E[x * I(m_i > x_i)]$ и он должен стремится к серверному rtp
Следовательно, $x * P(m > x)$ должен примерно равняться rtp, a это условие будет соблюдаться при $P(m>x) = rtp/x$.
То есть функция распределения у нашей последовательности $F(m) = 1 - rtp/x$
Распределение Парето
$F(m) = 1 - rtp/x$ это распределение Парето, которое имеет вид
$$ F(x) = 1 - (x_m/x)^k $$
Следовательно, мы можем выбрать $x_m = 1$ и $k = 1$
Обратное преобразование
Используя метод обратного преобразования
$M = F^-1(U)$, где U это uniform распределение от 0 до 1.
Получаем что $U = 1 - 1/x$ и из этого получаем что $x = 1/(1-u)$
так как m не может быть меньше 1, значит если U < 1-rtp мы выводим 1, в других
случаях мы выводим 1/1-u