Задать вопрос
@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
  • Вопрос задан
  • 165 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 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 Автор вопроса
я слегка улучшил формулу но под конец она все равно кода то не туда уходит
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы