JavaRush /Блоги Java /Random-TG /Синфи Java Math ва усулҳои он

Синфи Java Math ва усулҳои он

Дар гурӯҳ нашр шудааст
Дар ин мақола мо шарҳи мухтасари синфи математикаро дар Java медиҳем. Биёед дар бораи усулҳои ин синф ва чӣ гуна истифода бурдани онҳо сӯҳбат кунем. Синфи Math дар бастаи java.lang ҷойгир аст ва маҷмӯи усулҳои статикиро барои иҷрои як қатор ҳисобҳои гуногуни математикӣ таъмин мекунад. Дар зер намунаҳои ҳисобҳо оварда шудаанд, ки барои онҳо синфи Math муфид буда метавонад:
  • Ҳисоб кардани арзишҳои мутлақ (арзишҳои модулӣ)
  • Ҳисоб кардани арзишҳои функсияҳои тригонометрӣ (синусҳо, косинусҳо ва ғ.)
  • Баландшавӣ ба дараҷаҳои гуногун
  • Истихроҷи решаҳои дараҷаҳои гуногун
  • Насли рақамҳои тасодуфӣ
  • Якчандкунӣ
  • Ва гайра.
Дар зер мо кӯшиш мекунем, ки бубинем, ки синфи Java Math ба ҳалли масъалаҳои дар боло номбаршуда чӣ гуна кӯмак мерасонад. Синфи Java Math ва усулҳои он - 1Биёед таҳлor синфро бо усулҳое оғоз кунем, ки ба шумо имкон медиҳанд модули арзишро ҳисоб кунед. Усули abs барои ин масъул аст. Ин усул пурбор аст ва синфи Math фарқиятҳои зерин дорад:
  • abs дукаратаи статикӣ (дучандон a)
  • шинокунандаи статикӣ abs (шино a)
  • статикӣ int abs (int a)
  • абс дароз статикӣ (дароз a)
Намунаи истифода:
public static void main(String[] args) {
        System.out.println(Math.abs(-1));      // 1
        System.out.println(Math.abs(-21.8d));  // 21.8
        System.out.println(Math.abs(4532L));   // 4532
        System.out.println(Math.abs(5.341f));  // 5.341
    }

Ҳисоб кардани арзишҳои функсияҳои тригонометрӣ

Синфи Math ба шумо имкон медиҳад, ки функсияҳои гуногуни тригонометриро ҳисоб кунед - синусҳо, косинусҳо, тангенсҳо ва ғайра. Рӯйхати пурраи усулҳоро дар вебсайти расмии ҳуҷҷатҳо пайдо кардан мумкин аст . Дар зер рӯйхати ин усулҳо оварда шудааст:
  • гуноҳи дукаратаи статикӣ (дучандон а)
  • cos дукаратаи статикӣ (дучандон a)
  • таниши дукаратаи статикӣ (дучандон а)
  • статикии дукарата (дучандон а)
  • acos дукаратаи статикӣ (дучандон а)
  • атан дукаратаи статикӣ (дучандон а)
Усулҳои ҳисоб: синус, косинус, тангенс, арксинус, арккосинус, арктангенс. Ҳар як усул арзиши кунҷи `a`-ро ҳисоб мекунад. Ин параметр ба ҳар як усул гузаронида мешавад ва дар ҳар як ҳолат бо радианҳо чен карда мешавад (ва на бо дараҷаҳо, тавре ки мо одат кардаем). Дар ин ҷо ду хабар ҳаст, хуб ва бад. Биёед бо чизи хуб оғоз кунем. Синфи Math дорои усулҳои табдил додани радианҳо ба дараҷаҳо ва дараҷаҳо ба радианҳо мебошад:
  • дукаратаи статикӣ ба дараҷаҳо (ангради дукарата)
  • статикии дукарата ба радианҳо (ангдеги дукарата)
Дар ин ҷо усули toDegrees кунҷи анградро, ки бо радиан чен карда мешавад, ба дараҷаҳо табдил медиҳад. Усули toRadians, баръакс, кунҷи angdeg-ро, ки бо дараҷаҳо чен карда мешавад, ба радианҳо табдил медиҳад. Хабари бад ин аст, ки ин бо баъзе хатогиҳо рух медиҳад. Ин аст мисоли ҳисоб кардани синусҳо ва косинусҳо:
public static void main(String[] args) {
        System.out.println(Math.sin(Math.toRadians(0)));
        System.out.println(Math.sin(Math.toRadians(30)));
        System.out.println(Math.sin(Math.toRadians(90)));

        System.out.println(Math.cos(Math.toRadians(0)));
        System.out.println(Math.cos(Math.toRadians(30)));
        System.out.println(Math.cos(Math.toRadians(90)));
    }
Барнома мебарорад:

0.0
0.49999999999999994
1.0

1.0
0.8660254037844387
6.123233995736766E-17
Ки он ба ҷадвалҳои синусҳо ва косинусҳо комилан мувофиқ нест, ки қисман аз сабаби хатогиҳо дар табдor дараҷаҳо ба радианҳо.

Экспонентатсия

Барои баланд бардоштани адад, синфи Math усули pow пешниҳод мекунад, ки дорои имзои зерин аст:
static double pow(double a, double b)
Ин усул параметри "a" -ро ба қудрати "b" баланд мекунад. Мисолҳо:
public static void main(String[] args) {
        System.out.println(Math.pow(1,2)); // 1.0
        System.out.println(Math.pow(2,2)); // 4.0
        System.out.println(Math.pow(3,2)); // 9.0
        System.out.println(Math.pow(4,2)); // 16.0
        System.out.println(Math.pow(5,2)); // 25.0

        System.out.println(Math.pow(1,3)); // 1.0
        System.out.println(Math.pow(2,3)); // 8.0
        System.out.println(Math.pow(3,3)); // 27.0
        System.out.println(Math.pow(4,3)); // 64.0
        System.out.println(Math.pow(5,3)); // 125.0
    }

Истихроҷи реша

Синфи Math усулҳои гирифтани решаҳои квадратӣ ва кубиро пешниҳод мекунад. Усулҳои зерин барои ин тартиб масъуланд:
  • sqrt дукаратаи статикӣ (дучандон a)
  • статикии дукарата cbrt (дучандон а)
Усули sqrt решаи квадратиро мегирад ва усули cbrt решаи кубро мегирад. Мисолҳо:
public static void main(String[] args) {
        System.out.println(Math.sqrt(4));   // 2.0
        System.out.println(Math.sqrt(9));   // 3.0
        System.out.println(Math.sqrt(16));  // 4.0

        System.out.println(Math.cbrt(8));   // 2.0
        System.out.println(Math.cbrt(27));  // 3.0
        System.out.println(Math.cbrt(125)); // 5.0
    }

Насли рақамҳои тасодуфӣ

Барои тавлиди рақамҳои тасодуфӣ, синфи Math усули тасодуфиро таъмин мекунад. Ин усул рақами тасодуфии мусбати воқеӣ (дучандон) дар диапазони аз 0,0 то 1,0 тавлид мекунад. Имзои усул чунин менамояд:
public static double random()
Биёед мисолҳоро дида бароем:
public static void main(String[] args) {
    for (int i = 0; i < 5; i++) {
        System.out.println(Math.random());
    }
}
Пас аз иҷрои усули асосӣ, дар консол инҳо нишон дода шуданд:

0.37057465028778513
0.2516253742011597
0.9315649439611121
0.6346725713527239
0.7442959932755443
Бо як каме дасткорӣ, шумо метавонед усули тасодуфии синфи Math-ро барои ба даст овардани ададҳои тасодуфии бутун, ки дар диапазони муайян ҷойгиранд, истифода баред. Ин аст мисоли функсияе, ки ду аргументи min ва максро мегирад ва адади тасодуфиро бармегардонад, ки дар диапазон аз min (дохил) то макс (бо назардошти) ҷойгир аст:
static int randomInARange(int min, int max) {
    return  (int) (Math.random() * ((max - min) + 1)) + min;
}
Биёед усули асосиро нависед, ки дар он мо усули randomInARange-ро санҷида метавонем:
public class MathExample {


    public static void main(String[] args) {
        // Карта, в которой мы будем хранить количество выпадений Howого-то числа
        Map<Integer, Integer> map = new TreeMap<>();

        // За 10000 операций
        for (int i = 0; i < 10000; i++) {

            // Сгенерируем рандомное число от -10 включительно до 10 включительно
            final Integer randomNumber = randomInARange(-10, 10);


            if (!map.containsKey(randomNumber)) {
                // Если карта еще не содержит "выпавшего случайного числа"
                // Положим его в карту с кол-вом выпадений = 1
                map.put(randomNumber, 1);
            } else {
                // Иначе, увеличим количество выпадений данного числа на 1
                map.put(randomNumber, map.get(randomNumber) + 1);
            }
        }

        // Выведем на экран содержимое карты в формате ключ=[meaning]
        for (Map.Entry<Integer, Integer> entry : map.entrySet()){
            System.out.println(String.format("%d=[%d]", entry.getKey(), entry.getValue()));
        }
    }

    static int randomInARange(int min, int max) {
        return  (int) (Math.random() * ((max - min) + 1)) + min;
    }
}
Пас аз иҷро кардани усули асосӣ, натиҷа метавонад чунин бошад:

-10=[482]
-9=[495]
-8=[472]
-7=[514]
-6=[457]
-5=[465]
-4=[486]
-3=[500]
-2=[490]
-1=[466]
0=[458]
1=[488]
2=[461]
3=[470]
4=[464]
5=[463]
6=[484]
7=[479]
8=[459]
9=[503]
10=[444]

Process finished with exit code 0

Якчандкунӣ

Барои яклухткунии рақамҳо дар Java яке аз воситаҳо усулҳои синфи Math мебошад. Аниқтараш, усулҳои мудаввар, шифт ва фарш:
  • даври дарози статикӣ (дучандон а)
  • даври статикӣ (шинокунандаи a)
  • ошёнаи дукаратаи статикӣ (дугона а)
  • шифти дукаратаи статикӣ (дучандон а)
Усули мудаввар - давраҳои маъмулӣ ба одами миёна. Агар қисми касри адад аз 0,5 зиёд ё баробар бошад, он гоҳ адад ба боло, дар акси ҳол ба поён яклухт карда мешавад. Усули ошёна ҳамеша, новобаста аз арзишҳои қисми касрӣ, ададро ба поён (ба сӯи беохирии манфӣ) давр мезанад. Усули шифт, баръакс, новобаста аз арзишҳои қисми каср, ададҳоро ба боло давр мезанад (ба суи беохири мусбат). Биёед мисолҳоро дида бароем:
public static void main(String[] args) {
    System.out.println(Math.round(1.3)); // 1
    System.out.println(Math.round(1.4)); // 1
    System.out.println(Math.round(1.5)); // 2
    System.out.println(Math.round(1.6)); // 2

    System.out.println(Math.floor(1.3)); // 1.0
    System.out.println(Math.floor(1.4)); // 1.0
    System.out.println(Math.floor(1.5)); // 1.0
    System.out.println(Math.floor(1.6)); // 1.0

    System.out.println(Math.ceil(1.3)); // 2.0
    System.out.println(Math.ceil(1.4)); // 2.0
    System.out.println(Math.ceil(1.5)); // 2.0
    System.out.println(Math.ceil(1.6)); // 2.0
}

Хулоса

Дар ин мақола мо ба дарси математика ба таври рӯякӣ назар кардем. Мо дида баромадем, ки чӣ тавр истифода бурдани ин синф шумо метавонед:
  • Модули арзишҳоро ҳисоб кунед;
  • Ҳисоб кардани арзишҳои функсияҳои тригонометрӣ;
  • Баланд бардоштани рақамҳо ба қудрат;
  • Решаҳои мураббаъ ва мукаабро ҷудо кунед;
  • Эҷоди рақамҳои тасодуфӣ;
  • Рақамҳои мудаввар.
Дар ин синф боз бисёр усулҳои ҷолиб вуҷуд доранд. Онро дар вебсайти расмии ҳуҷҷатҳо пайдо кардан мумкин аст . Хуб, барои шиносоии аввал, усулҳои дар боло номбаршуда кофӣ мебошанд.
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION