Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Инструкция по запуску

  1. Клонируйте репозиторий:
    git clone https://github.com/hololotl/random.git
    cd random/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

Расспишем это мат ожидание

$$\int_{0}^{n} x * (1- F_y(x)) * F_x(x_i) , dx$$

Так как последовательность клиента случайна и каждое число может выпасть равновероятно значит мы можем принять это как Uni распределение

$$1/9999\int_{0}^{n} x * (1- F_y(x)), dx = E[y]$$

Задача сводится к подбору функции распределения

Вариант А. $m_i$ это константа

Если наше число будет константой, то $F_y(x)$ это 0, если x от 1 до t, 1 в других случаях

Значит мы можем это рассписать интегралл как $$1/9999\int_{0}^{t} x dx = E[y] = rtp$$

считаем уравнение м получаем формулу для t = $\sqrt{rtp*2*9999 + 1}$

Таким образом мы можем постоянно выдавать константу t и получать приблизительно нужное число

Вариант B. Полученная константа + небольшой шум

В данном варианту мы так же считаем константу, и добавляем к ней небольшой шум.

Программный подпор шума показал, что разброс в более чем 10 процентов дает большую ошибку, Оптимальным вариантом оказалось 5 процентов от константы

Вариант C. Нормальное распредление с $E[x] = t $

В данном варианте мы так же вычисляем нужную константу, далее делаем нормальное распределение с разбросом 5 процентов от константы

Вычисление метрик каждого варинта

Для каждого алгоритма запускалось 10000 генераций последовательности клиента с длинной 10000

результаты

Сравнение методов генерации Y

Метод MAE Std % внутри допуска MAPE
Constant 0.0441 76.57 % 10.45 %
Constant + Uniform Noise 0.0438 0.05 77.34 % 10.14 %
Normal Distribution 0.0445 0.05 76.76 % 10.37 %

для задачи был выбран Constant + Uniform Noise, для самостоятельного запуска всех тестов, запустите и посмотрите вывод в консоли

cd algorithms
go test -v



About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages