- Клонируйте репозиторий:
git clone https://github.com/hololotl/random.git cd random/cmd go run . -rtp=0.6
У нас есть последовательность клиента:
Есть последовательность наших мультипликаторов
после преобразования у нас получается последовательность
rtp на стороне клиента равен
rtp на стороне клиента можно записать как
Расспишем это мат ожидание
Так как последовательность клиента случайна и каждое число может выпасть равновероятно значит мы можем принять это как Uni распределение
Задача сводится к подбору функции распределения
Если наше число будет константой, то
Значит мы можем это рассписать интегралл как
считаем уравнение м получаем формулу для
t =
Таким образом мы можем постоянно выдавать константу t и получать приблизительно нужное число
В данном варианту мы так же считаем константу, и добавляем к ней небольшой шум.
Программный подпор шума показал, что разброс в более чем 10 процентов дает большую ошибку, Оптимальным вариантом оказалось 5 процентов от константы
В данном варианте мы так же вычисляем нужную константу, далее делаем нормальное распределение с разбросом 5 процентов от константы
Для каждого алгоритма запускалось 10000 генераций последовательности клиента с длинной 10000
| Метод | 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