JavaRush /Java Blog /Random-TK /Java Math synpy we usullary

Java Math synpy we usullary

Toparda çap edildi
Bu makalada Java-da Matematika synpyna gysgaça syn bereris. Geliň, bu synpyň usullary we olary nähili ulanmalydygy barada gürleşeliň. Matematika synpy java.lang paketinde ýerleşýär we birnäçe dürli matematiki hasaplamalary ýerine ýetirmek üçin statiki usullaryň toplumyny üpjün edýär. Aşakda Matematika synpynyň peýdaly bolup biljek hasaplamalarynyň mysallary bar:
  • Mutlak bahalary hasaplamak (modulo bahalar)
  • Trigonometrik funksiýalaryň bahalaryny hasaplamak (sinuslar, kosinler we ş.m.)
  • Dürli derejelere çykmak
  • Dürli derejedäki kökleri çykarmak
  • Tötänleýin san döretmek
  • Tegelek
  • We ş.m.
Aşakda Java Math synpynyň ýokarda sanalan meseleleri çözmäge nähili kömek edýändigine göz aýlamaga synanyşarys. Java Math synpy we usullary - 1Geliň, baha modulyny hasaplamaga mümkinçilik berýän usullar bilen synlamaga başlalyň. Munuň üçin abs usuly jogapkärdir. Bu usul artykmaç ýüklenýär we Matematika synpynda aşakdaky tapawutlar bar:
  • statiki goşa abs (goşa a)
  • statik float abs (float a)
  • statik int abs (int a)
  • statik uzyn abs (uzyn a)
Ulanylyş mysaly:
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
    }

Trigonometrik funksiýalaryň bahalaryny hasaplamak

Matematika synpy dürli trigonometrik funksiýalary - sinuslary, kosinleri, tangentleri we ş.m. hasaplamaga mümkinçilik berýär, usullaryň doly sanawyny resmi resminama web sahypasynda tapyp bilersiňiz . Aşakda bu usullaryň sanawy:
  • statiki goşa günä (goşa a)
  • statik goşa cos (goşa a)
  • statiki goşa tan (goşa a)
  • statik goşa asin (goşa a)
  • statiki goşa akos (goşa a)
  • statik goşa atan (goşa a)
Usullar hasaplaýar: sin, kosin, tangent, arksin, arkosin, arktangent. Her usul `a` burçunyň bahasyny hasaplaýar. Bu parametr her usula geçirilýär we her ýagdaýda radianlarda ölçelýär (we öňküsi ýaly derejelerde däl). Bu ýerde gowy we erbet iki habar bar. Gowy bilen başlalyň. Matematika synpynda radianlary derejelere we derejelere radianlara öwürmek usullary bar:
  • statiki goşa toDegrees (goşa angrad)
  • statiki goşa Radianlara (goşa angdeg)
Bu ýerde toDegrees usuly radianlarda ölçenen burç angradyny derejelere öwürer. ToRadians usuly, tersine, derejelerde ölçenen burç burçuny radianlara öwürýär. Erbet habar, munuň käbir ýalňyşlyk bilen bolup geçmegi. Ine, sinuslary we kosinleri hasaplamagyň mysaly:
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)));
    }
Programma çykar:

0.0
0.49999999999999994
1.0

1.0
0.8660254037844387
6.123233995736766E-17
Sine we kosinleriň tablisalaryna düýbünden laýyk gelmeýän, bölekleýin derejelerden radianlara öwrülmegindäki ýalňyşlyklar sebäpli.

Eksponentasiýa

San güýjüne ýetmek üçin, Matematika synpy aşakdaky goly bolan pow usuly bilen üpjün edýär:
static double pow(double a, double b)
Bu usul "a" parametrini güýje "b" ýokarlandyrýar. Mysallar:
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
    }

Kök çykarmak

Matematika synpy kwadrat we kub köklerini almagyň usullaryny hödürleýär. Bu amal üçin aşakdaky usullar jogapkärdir:
  • statiki goşa sqrt (goşa a)
  • statiki goşa cbrt (goşa a)
Sqrt usuly kwadrat kök alýar, cbrt usuly kub köküni alýar. Mysallar:
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
    }

Tötänleýin san döretmek

Tötänleýin sanlary döretmek üçin Matematika synpy tötänleýin usuly üpjün edýär. Bu usul 0.0-dan 1.0 aralygynda tötänleýin polo positiveitel hakyky (goşa) san döredýär. Usul goly şuňa meňzeýär:
public static double random()
Mysallara seredeliň:
public static void main(String[] args) {
    for (int i = 0; i < 5; i++) {
        System.out.println(Math.random());
    }
}
Esasy usuly ýerine ýetirensoň, konsolda aşakdakylar görkezildi:

0.37057465028778513
0.2516253742011597
0.9315649439611121
0.6346725713527239
0.7442959932755443
Biraz manipulýasiýa etmek bilen, belli bir aralykda ýerleşýän bitewi tötänleýin sanlary almak üçin Matematika synpynyň tötänleýin usulyny ulanyp bilersiňiz. Ine, min we max iki argumenti alýan we min (öz içine alýan) -dan max (öz içine alýan) aralygynda ýerleşýän tötänleýin bitewi sanlary yzyna gaýtaryp berýän funksiýanyň mysaly:
static int randomInARange(int min, int max) {
    return  (int) (Math.random() * ((max - min) + 1)) + min;
}
Tötänleýin INARange usulyny synap görjek esasy usulymyzy ýazalyň:
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;
    }
}
Esasy usuly işledensoň, çykyş şeýle bolup biler:

-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

Tegelek

Java-da sanlary tegeleklemek üçin gurallaryň biri Matematika synpynyň usullarydyr. Has takygy, tegelek, potol we pol usullary:
  • statik uzyn tegelek (goşa a)
  • statik int tegelek (ýüzmek a)
  • statik goşa gat (goşa a)
  • statik goşa potolok (goşa a)
Tegelek usuly - adaty adama adaty bolşy ýaly tegelek. Sanyň fraksiýa bölegi 0,5-den uly ýa-da deň bolsa, san tegelek bolar, ýogsam tegelek bolar. Pol usuly elmydama, fraksiýa böleginiň bahalaryna garamazdan, sanlary aşak öwürýär (negatiw çäksizlige tarap). Şift usuly, tersine, fraksiýa böleginiň bahalaryna garamazdan, sanlary tegelekleýär (polo positiveitel çäksizlige tarap). Mysallara seredeliň:
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
}

Netije

Bu makalada Matematika synpyna ýüzleý göz aýladyk. Bu synpy nädip ulanyp boljakdygyna göz aýladyk:
  • Bahalary modul hasaplaň;
  • Trigonometrik funksiýalaryň bahalaryny hasaplamak;
  • Häkimiýetlere sanlary köpeltmek;
  • Kwadrat we kub köklerini çykarmak;
  • Tötänleýin sanlary dörediň;
  • Tegelek sanlar.
Bu synpda başga-da köp gyzykly usul bar. Resmi resminamalar web sahypasynda tapyp bilersiňiz . Ilki bilen tanyşmak üçin ýokarda sanalan usullar ýeterlikdir.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION