@zeni1agent

Как превратить процент в такое число?

У меня есть вот такой список данных которые я получил методом тыка
spoiler
100 =  1072693248
99.9 = 1072692198 // 100 - 99.9 =  1050
99.8 = 1072690101 // 99.9 - 99.8 = 2097
99.7 = 1072688004 // 99.8 - 99.7 = 2097
99.6 = 1072685906 // 99.7 - 99.6 = 2098
99.5 = 1072683810
99.4 = 1072681713
99.3 = 1072679616
99.2 = 1072677519
99.1 = 1072675421
99.0 = 1072673324
98.9 = 1072671227
98.8 = 1072669130
98.7 = 1072667032
98.6 = 1072664935
98.5 = 1072662838 
98.4 = 1072660741
98.3 = 1072658644
98.2 = 1072656547
98.1 = 1072654450
98.0 = 1072652353
97.9 = 1072650256
97.8 = 1072648159
97.7 = 1072646062
97.6 = 1072643964
97.5 = 1072641867
97.4 = 1072639770
97.3 = 1072637673
97.2 = 1072635576
97.1 = 1072633479
97.0 = 1072631381
90.0 = 1072484580
89.9 = 1072482483
75.0 = 1072170008 
74.9 = 1072167911 // 75.0 - 74.9 =2097
70.0 = 1072065150 
69.9 = 1072063052 // 70.0 - 69.9 =2098
65.0 = 1071960292 
64.9 = 1071958195 // 65.0 - 65.0 =2097
60.0 = 1071855435
59.9 = 1071853337 // 60.0 - 59.9 =2098
55.0 = 1071750577
54.9 = 1071748480 // 55.0 - 55.0 =2097
50.0 = 1071645720
49.9 = 1071642574 // 50.0 - 49.9 =3146
45.0 = 1071437053
44.9 = 1071432859 // 45.0 - 44.9 =4194
40.0 = 1071227338
39.9 = 1071223143 // 40.0 - 39.9 =4195
35.0 = 1071017623
34.9 = 1071013428 // 35.0 - 34.9 =4195
30.0 = 1070807907
29.9 = 1070803713 // 30.0 - 29.9 =4194
25.0 = 1070598192  
24.9 = 1070591901 // 25.0- 24.9 = 6291
20.0 = 1070180859
19.9 = 1070172470 // 20.0 -19.9 = 8389
15.0 = 1069761429
14.9 = 1069753039 // 15.0 -14.9 = 8390
10.0 = 1069136477
9.9 =  1069119700 // 10.0 - 9.9 = 16777
9.8 =  1069102923 // 9.9 - 9.8 =  16777
9.7 =  1069086146 // 9.8 - 9.7 =  16777
9.6 =  1069069369 // 9.7 - 9.6 =  16777
9.5 =  1069052591 // 9.6 - 9.5 =  16778
9.4 =  1069035814 // 9.5 - 9.4 =  16777
9.3 =  1069019037 // 9.4 - 9.3 =  16777
9.2 =  1069002260 // 9.3 - 9.2 =  16777
9.1 =  1068985482 // 9.2 - 9.1 =  16778
9.0 =  1068968705 // 9.1 - 9.0 =  16777
5.0 =  1068096289 
4.9 =  1068062735 // 5.0 - 4.9 =  33554
4.8 =  1068029181 // 4.9 - 4.8 =  33554
4.7 =  1067995627 // 4.8 - 4.7 =  33554
4.6 =  1067962072 // 4.7 - 4.6 =  33555
4.5 =  1067928518 // 4.6 - 4.5 =  33554
4.4 =  1067894963 // 4.5 - 4.4 =  33555
4.3 =  1067861409 // 4.4 - 4.3 =  33554
4.2 =  1067827855 // 4.3 - 4.2 =  33554
4.1 =  1067794300 // 4.2 - 4.1 =  33555
4.0 =  1067760746 // 4.1 - 4.0 =  33554
3.5 =  1067592974
3.4 =  1067559419 // 3.5 - 3.4 =  33555
3.0 =  1067400035
2.9 =  1067332926 // 3.0 - 2.9 =  67109
2.5 =  1067064491
2.4 =  1066997382 // 2.5 - 2.4 =  67109
2.0 =  1066728947
1.9 =  1066661838 // 2.0 - 1.9 =  67109
1.5 =  1066385013
1.4 =  1066250796 // 1.5 - 1. 4=  134217
1.0 =  1065713925 
0.9 =  1065579708 // 1.0 - 0.9 =  134217
0.8 =  1065445489 // 0.9 - 0.8 =  134219
0.7 =  1065269329 // 0.8 - 0.7 =  176160
0.6 =  1065000893 // 0.7 - 0.6 =  268436
0.5 =  1064732458 // 0.6 - 0.5 =  268435
0.4 =  1064464023 // 0.5 - 0.4 =  268435
0.3 =  1064086535 // 0.4 - 0.3 =  377488
0.2 =  1063549664 // 0.3 - 0.2 =  536871
0.1 =  1062769523 // 0.2 - 0.1 =  780141
0.0 =  1061184077 // 0.1 - 0.0 =  1585446

иногда случается погрешность 1 или 2 цифре между одним целым процентом 99.0 и 98.0
Я построил вот такую формулу но она работает только до 75.0 с небольшой погрешностью
val = 75.0
console.log(Math.round(      1072693248- (100 - Math.round(val)*2) - 1050 - 2097 * (999 - val * 10)            ))

Кто нибудь знает формулу по которой я из 49.9 могу получить вот это 1071642574 с минимальной погрешностью?

Судя по имеющимся данным скорее всего формула выглядит примерно так

5ed78f4002e82436748524.png
  • Вопрос задан
  • 164 просмотра
Пригласить эксперта
Ответы на вопрос 4
@pfg21
ex-турист
в общем случае никто.
нужно аналитически подобрать функцию/набор функций максимально приближающуюся к твоим данным и уже алгоритмом подбирать ее параметры/разлагать в члены с достижением необходимой погрешности...
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
В первом приближении
y = lg(17.65 * x + 1) * 3562434.034 + 1061184077
Но ошибка довольно большая. Возможно, что оригинальная функция задана сплайном или таблично.
Ответ написан
Комментировать
wataru
@wataru
Разработчик на С++, экс-олимпиадник.
Нужно строить регрессию.
Например, сделаейте так:
Заведите таблицу, где у вас первый столбец - ваши значения. Второй столбец - проценты (p). Третий - константа 1. четвертый - квадрат процентов (p^2). Потом логарифмы (log p), корни разных степеней, обратные (1/p).
Потом прогоните на этой таблице линейную регрессию методом наименьших квадратов (фактически - решить систему линейных уровнений, например, методом Гаусса), она даст вам коэффициенты перед всеми функциями в аналитической формуле. Если не угадали с функциями, то ошибка будет большая. Фукции с мелкими коэффициентами можно будет отбросить и заменять чем-то другим.
Возможно стоит добавить логарифмов со здвигом вида c1*log(p+c2), как у Rsa97, но тогда при методе наименьщих квадратов будут не только линейные урванения, придется помучиться аналитически.
Ответ написан
@zeni1agent Автор вопроса
я слегка улучшил формулу но под конец она все равно кода то не туда уходит
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы