Práce s ÄÃsly
Pro práci s ÄÃsly existuje knihovna math. Funguje stejnÄ› jako knihvna string, jen s jinýma funkcema pochopitelnÄ›. A my se na ty funkce podÃváme. Pozor: Nebudu zde vysvÄ›tlovat matematiku ale funkce které použÃvá Lua!
Matematické konstanty
math.pi - konstanta reprezentujÃcà pi. Hodnota je 3.14159265359.
math.huge - konstanta reprezentujÃcà +nekoneÄno. ÚplnÄ› zbyteÄnÄ› ale je tu.
Konstanty se nepÃÅ¡Ã se závorky! UvidÃte v následujÃcÃch pÅ™Ãkladech.
math.cos , math.sin , math.tan
Tyto funkce majà jen jeden vstupnà parametr - hodnotu úhlu v radiánech - a jeden výstup - hodnotu sinu, cosinu a tangens.
12print(math.sin(math.pi));3-- "0"4print(math.cos(math.pi));5-- "-1"6print(math.tan(math.pi));7-- "0"8
math.cosh , math.sinh , math.tanh
Funkce jako math.cos , math.sin , math.tan akorát vracà hyperbolickou hodnotu tÄ›chto funkcÃ. NÄ›kdy se může hodit. AbsolutnÄ› netuÅ¡Ãm co to je hyperbolický sinus nebo tak, ale má to hezké grafy.
12print(math.sinh(math.pi));3-- "11.548739"4print(math.cosh(math.pi));5-- "11.591953"6print(math.tanh(math.pi));7-- "0.996272"8
math.abs
Funkce vracà absolutnà hodnotu daného ÄÃsla. ÄŒÃslo může být i desetinné.
1print(math.abs(61));2-- "61"3print(math.abs(-39));4-- "39"
math.acos, math.asin
Funkce arcus sinus a arcus cosinus - obrácená hodnota sinu a cosinu. PÅ™Ãklad:
1print(math.asin(0));2-- "0"3print(math.acos(1));4-- "0"
math.atan, math.atan2
Arcus tangens ve dvou podobách. Funkce atan má pouze jeden vstupnà parametr a to podÃl tangesn. Funkce atan2 má dva vstupnà parametry - sinus a cosinus. Oba dva vracejà hodnotu arcus tangens.
1local c,s = math.cos(math.pi*2),math.sin(math.pi*2);2print(math.atan(s/c));3-- "6.28318530"4print(math.atan2(s,c));5-- "6.28318530"
math.ceil, math.floor
Tyto funkce sloužà k zaokrouhlovánÃ. Ceil zaokrouhluje nahoru a floor dolů. Neexistuje žádná funkce která by zaokrouhlovala od 5 nahoru a jinak dolů. OvÅ¡em tato funkce je jednoduchá na sestrojenÃ. Ceil i floor majà jeden vstupnà parametr - ÄÃslo - a jeden výstup - celé ÄÃslo.
1print(math.ceil(123.4646));2-- "124"3print(math.floor(68416.94886));4-- "68416"
math.exp, math.log
Funkce vracejÃcà výsledek matematického zápisu. Exp vracà e (2.71828182846) umocnÄ›ný o vstupnà hodnotu (math.exp = e^vstupni_hodnota). Funkce log vracà hodnotu pÅ™irozeného logaritmu.
1print(math.exp(0))2-- "1"3print(math.exp(1))4-- "2.718281828459"5print(math.exp(27))6-- "532048240601.8"7print(math.log(532048240601))8-- "26.999999999998"9print(math.log(3))10-- "1.0986122886681"11
math.log10
Vracà hodnotu dekadického logaritmu. Vstupnà hodnota musà bát kladná.
1print(math.log10(100));2-- "2"
math.pow, math.sqrt
Funkce pow umocnà ÄÃslo s tÃm, že prvnà vstupnà parametr je základ a druhým vstupnÃm parametrem je exponent. Funkce sqrt naopak odmocňuje (druhá odmocnina).
1print(math.pow(3,3));2-- "27"3print(math.sqrt(25));4-- "5"
math.min, math.max
Ve hÅ™e využÃvané funkce. Jedna vracà minimálnà hodnotu ze vÅ¡ech zadaných (min) a druhá hodnotu maximálnà (max). PoÄet vstupnÃch parametrů je neomezen.
1print(math.min(1,2));2-- "1"3print(math.min(1.2, 7, 3));4-- "1.2"5print(math.min(1.2, -7, 3));6-- "-7"7print(math.max(1.2, -7, 3));8-- "3"9print(math.max(1.2, 7, 3));10-- "7"
math.modf
Funkce vrátà celoÄÃselnou a desetinnou Äást zadaného ÄÃsla - návratové jsou tedy dvÄ› hodnoty, vstupnà pouze jedna.
1local a,b = math.modf(5.3);2print("Celociselna cast: "..5..", desetinna cast: "..b);3-- "Celociselna cast: 5, desetinna cast: 0.3"
math.random, math.randomseed
Tyto funkce sloužà ke generovánà náhodných ÄÃsel. Funkcà randomseed se nastavà klÃÄ k pseudo-náhodnému generátoru. Poté můžeme použÃvat funkcà random s téměř 100% jistotou že dané ÄÃslo bude náhodné. Můžeme použÃvat random bez použità pÅ™edchozà funkce, ale nezaruÄuji 100% funkÄnost. Vzhledem k tomu, že ÄÃsla jsou vybÃráná na základÄ› klÃÄe, nenastavujte ho v cyklu pÅ™ed random. V takovém pÅ™ÃpadÄ› by byly výsledky téměř totožné.
Funkce randomseed má jenom jeden vstupnà parametr - celé ÄÃslo jako klÃÄ - a žádný výstup.
Funkce random má nula až dva vstupnà parametry. Podle toho co zadáme se funkce chová.
math.random(); - pokud nezadáme žádný parametr, funkce generuje desetinné ÄÃslo z intervalu <0;1>
math.random(celé_ÄÃslo); - pokud zadáme pouze jeden parametr, funkce generuje celé ÄÃslo z intervalu <1;celé_ÄÃslo>
math.random(celé_ÄÃslo,celé_ÄÃslo2); - pokud zadáme oba možné parametry, funkce generuje celé ÄÃslo z intervalu <celé_ÄÃslo;celé_ÄÃslo2>
PÅ™Ãklad:
1math.randomseed(123456789);2print(math.random());3-- "0.675786"4math.randomseed(123456789);5print(math.random());6-- "0.675786"7print(math.random(651));8-- "244.000000"9print(math.random(651));10-- "69.000000"11print(math.random(-100,100));12-- "-62.000000"13print(math.random(5,100));14-- "9.000000"