Kontakty

Jquery náhodné číslo z rozsahu. Náhodné spravované v JavaScript. Upevnenie čísla v rozsahu

Po GENERATI NG, náhodným číslom pomocou počítačového programu, je stále považovaný za náhodné číslo, ak je vybraté číslo časť alebo plná zdroja. Ale ak sa zmenilo, potom matematika neprijímajte ho ako náhodné číslo a môžu to nazývať predsienené číslo. Ale ak vyvíjate program pre jednoduchú úlohu, nebude to zvážiť. Ale ak vyvíjate program na generovanie náhodného čísla pre cenný materiál, napríklad program lotérie alebo hier, potom váš program bude zamietnutý manuálom, ak tento prípad nepovažujete.

Takže pre tých, ktorí majú takýchto ľudí, je tu moja ponuka:.

Generovanie náhodných čísel s Math.Random () (povedzme to n)

Teraz je, že podlaha n * 10 je vaša odpoveď a v prípade potreby, podlaha n * 100 je vaša odpoveď a tak ďalej.

Teraz zadajte svoju úlohu:

Požiadali ste o čísla medzi konkrétnym rozsahom. (V tomto prípade ste v tomto rozsahu vysídlení. - Po prijatí čísla z, otočenie kocky, budete pridať do, ale stále je to náhodné puzdro, ak a len vtedy, ak je smrť nestranou.)

Zvážte tak rozsah \u003d\u003d\u003e počet prvkov v rozsahu \u003d 247 - 78 + 1 \u003d 170; (Keďže obe hranice zahŕňajú

/ * MTHOD 1: * / var I \u003d 78, J \u003d 247, K \u003d 170, A \u003d, B \u003d, C, D, E, F, L \u003d 0; pre (; ja<= j; i++){ a.push(i); } while(l < 170){ c = Math.random()*100; c = Math.floor(c); d = Math.random()*100; d = Math.floor(d); b.push(a[c]); e = c + d; if((b.length != k) && (e < k)){ b.push(a[e]); } l = b.length; } console.log("Method 1:"); console.log(b); /*Method 2:*/ var a, b, c, d = , l = 0; while(l < 170){ a = Math.random()*100; a = Math.floor(a); b = Math.random()*100; b = Math.floor(b); c = a + b; if(c <= 247 || c >\u003d 78) (D.Push (C);) inak (D.PUSH (A);) L \u003d D.Length; ) Console.log ("Metóda 2:"); Konzola.log (d);

Poznámka: .. V jednom spôsobe, prvý som vytvoril pole, ktoré obsahuje čísla, ktoré potrebujete, a potom ich náhodne umiestnite do iného poľa v dvoch metóde, generujte čísla náhodne a skontrolujte, či sú v kapele, ktorú potrebujeme a potom ho vložte do poli. Tu som vytvoril dve náhodné čísla a použil ich celkové množstvo, aby sa maximalizovala rýchlosť programu, minimalizovala frekvenciu porúch, pričom sa užitočné číslo. Budem tiež odporučiť moju prvú metódu generovania náhodných čísel v konkrétnom rozsahu.

V oboch metódach, vaša konzola e zobrazí výsledok. (Stlačte F12 v Chrome, aby ste otvorili konzolu)

Ich Math.Random () Funkcia vráti plávajúci bod, pseudo-náhodné číslo v rozsahu 0-1 (vrátane 0, ale nie 1) s približne rovnomernou distribúciou nad týmto rozsahom - ktoré môžete potom merať do požadovaného rozsahu. Implementácia vyberie počiatočné osivo algoritmu generácie náhodného čísla; Užívateľ nie je možné zvoliť alebo vynulovať.

Math.Random () nie. Poskytnite kryptograficky bezpečné náhodné čísla. Nepoužívajte ich pre čokoľvek súvisiace s bezpečnosťou. Použite Web Crypto API ASSTEAD, a skôr prednostne metódu.

Syntax

Math.Random ()

Návratová hodnota.

Plávací bod, pseudo-náhodné číslo medzi 0 (vrátane) a 1 (exkluzívne).

Príklady.

Všimnite si, že ako čísla v Javascript sú IEEE 754 Plávajúce bodové čísla s okrúhlym najbližším správaním, rozsahy tvrdené pre nižšie uvedené funkcie (okrem samotného Math.Random ()) Aren "t presné. Ak sú zvolené extrémne veľké hranice (2 53 alebo vyššie), je to extrémne. Zriedkavé prípady na výpočet zvyčajne vylúčenej hornej hranici.

Získanie náhodného čísla medzi 0 (vrátane) a 1 (exkluzívne)

Funkcia GETRANDOM () (RETURN MATHY.RANDOMY ();)

Získanie náhodného čísla medzi dvoma hodnotami

Tento príklad vráti náhodné číslo medzi zadanými hodnotami. Vrátená hodnota nie je nižšia ako (a môže sa pravdepodobne rovná) min, a je menšia ako (a nie je rovnaká) max.

Funkcia GETRANDOMARBITRÁTORA (min, max) (návrat math.random () * (max - min) + min;)

Získanie náhodného celého čísla medzi dvoma hodnotami

Tento príklad sa vracia náhodne celé číslo Medzi zadanými hodnotami. Hodnota nie je nižšia fanal (alebo ďalšie celé číslo väčšie ako min, ak MIN ISN "t celé číslo) a je menšie ako (ale nie rovné) max.

Funkcia GETRANDOMINT (MIN, MAX) (MIN \u003d MATHY.CEIL (MIN); Max \u003d Math.floor (max); návrat Math.floor (Math.Random () * (max - min)) + min; // maximum Je exkluzívne a minimum je vrátane)

To by mohlo byť lákavé používať matematiku (), aby to dosiahlo, ale tým, že by to spôsobilo, že vaše náhodné čísla bude nasledovať non-rovnomernú distribúciu, ktorá nemusí byť prijateľná pre vaše potreby.

Získanie náhodného celého čísla medzi dvoma hodnotami, vrátane

Kým funkcia getrandomint () vyššie je inkluzívna na minimálnej úrovni, je to exkluzívne na maximum. Čo ak potrebujete výsledky, ktoré majú byť zahrnuté na minimum aj maximum?

Funkcia GETRANDOMINTINCLUSIVE (min \u003d max.CEIL (min); max \u003d math.floor (max); návrat Math.floor (Math.Random () * (max - min + 1)) + min; // Maximum je vrátane a minimum je inkluzívne)

Technické údaje.

Špecifikácia Postavenie. Komentár
ECMAScript 1. vydanie (ECMA-262) Štandardný Počiatočná definícia. JavaScript 1.0 (len UNIX) / JavaScript 1.1 (všetky platformy).
ECMASCIPT 5.1 (ECMA-262)
Štandardný
ECMASCRIKA 2015 (6. vydanie, ECMA-262)
Definícia "Math.Random" v tejto špecifikácii.
Štandardný
Najnovší návrh eCMascriptu (ECMA-262)
Definícia "Math.Random" v tejto špecifikácii.
NÁVRH.

Kompatibilita prehliadača

Tabuľka kompatibility na tejto stránke je generovaná zo štruktúrovaných údajov. Ak by ste chceli prispieť k údajom, prosím, pozrite sa na https://github.com/mdn/browser-compat-data a pošlite nám žiarovku.

Aktualizovať údaje o kompatibilite na github

Desktop.MobilnéServer
Chróm.Hrana.Firefox.Internet Explorer.Opera.Safari.Android WebView.Chróm pre androidFirefox pre AndroidOpera pre AndroidSafari na iOS.Samsung InternetNode.js.
NáhodnýChrómová plná podpora ánoEDGE Plná podpora 12Firefox Full Support 1Tj plná podpora ánoOpera plná podpora ánoSafari plná podpora ánoWebView Android Full Support ÁnoChrome Android Plná podpora ánoFirefox Android Plná podpora 4Opera Android Full Support ÁnoSafari iOS plná podpora ánoSamsung Internet Android Plná podpora ánonodejs plná podpora áno
Veľmi často výpočty v Javascript dávajú úplne výsledky, ktoré chceme. Samozrejme, môžeme robiť s číslami čokoľvek - zaokrúhľovanie vo veľkej alebo menšej strane, nastavte rozsahy, odrezať zbytočné čísla na určitý počet desatinných miest, to všetko závisí od toho, čo chcete robiť v budúcnosti s týmto číslom.

Prečo potrebujete zaokrúhľovanie?

Jedným z zaujímavých aspektov JavaScriptu je, že skutočne nekladá celé čísla, okamžite pracujeme s číslami s pohyblivým bodom. To v kombinácii so skutočnosťou, že mnohé frakčné hodnoty nemôžu byť vyjadrené konečným počtom desatinných značiek, môžeme získať také výsledky v JavaScript:

0.1 * 0.2; > 0.020000000000000004 0.3 - 0.1 > 0.19999999999999998
Na praktické účely, táto nepresnosť nezáleží, v našom prípade hovoríme o chybe v Quintillion dolárov, ale niekto môže sklamať. Môžeme získať mierne podivný výsledok a pri práci s číslami, ktoré sú hodnoty ventilov, percentá alebo veľkostiach súborov. S cieľom opraviť tieto nepresnosti, musíme byť schopní zaokrúhliť výsledky, zatiaľ čo stačí vytvoriť desatinnú presnosť.

Zaokrúhľovanie čísel má praktickú aplikáciu, môžeme manipulovať s číslom v určitom rozsahu, napríklad, chceme zaokrúhliť hodnotu na najbližšie celé číslo, a nefunguje len s desatinnou časťou.

Zaokrúhlenie desatinných čísel

Ak chcete odrezať desatinné číslo, použite metódu TOfixed alebo TopRecision. Obaja sú užívané jediným argumentom, ktorý určuje, koľko zmysluplných čísel (t.j. celkový počet čísel používaných medzi číslom) alebo po bodkočiarke (množstvo po desatinnom bode) by malo zahŕňať výsledok: \\ t
  1. Ak argument nie je definovaný pre Tfixed (), potom bude štandardne nula, čo znamená 0 \u200b\u200bznačiek po čiaste, argument má maximálnu hodnotu rovnú 20.
  2. Ak argument nie je špecifikovaný pre TopRecision, číslo zostáva nedotknuté
Nechajte Randnum \u003d 6,25; randnum.tofixed (); \u003e "6" math.pi.topreCision (1); \u003e "3" Randnum \u003d 87,335; Randnum.Tofixed (2); \u003e "87.33" Randnum \u003d 87,337; Randnum.topreCision (3); \u003e "87.3"
Metódy TOFIXED () a topRecision () vrátia reťazcovi reťazca výsledku, nie číslo. To znamená, že pri sumarovaní zaoblenej hodnoty s RandNum sa vykoná riadky Concenatete a nie množstvo čísel:

Nechajte Randnum \u003d 6,25; Nech zaokrúhlené \u003d randnum.tofixed (); // "6" Console.log (RandNum + zaoblené); \u003e "6.256"
Ak chcete mať výsledok mať číselný typ údajov, budete musieť aplikovať Parsefloat:

Nechajte Randnum \u003d 6,25; Nech zaokrúhlené \u003d parsefloat (randnum.tofixed (1)); Konzola.log (zaoblené); \u003e 6.3.
Upozorňujeme, že 5 hodnôt sú zaoblené, s výnimkou zriedkavých prípadov.

TOFIXED () a topRecision () metódy sú užitočné, pretože nemôžu nielen odrezať frakčnú časť, ale tiež dopĺňať signály po čiaste, ktorá je vhodná pri práci s menou:

Nechať wholenum \u003d 1 nechať dolárov \u003d wholenum.Tofixed (2); Console.log (dollscents); \u003e "1.00"
Podmienka Upozorňujeme, že TopReCision poskytne výsledok v exponenciálnom zázname, ak je počet celých čísel väčší ako samotná presnosť:

Nechajte num \u003d 123,435 num.topreCision (2); \u003e "1.2E + 2"

Ako sa vyhnúť chybám zaokrúhľovania s desatinnými číslami

V niektorých prípadoch, Tfixed a TopRecision zaokrúhľuje hodnotu 5 na menšiu stranu a vo veľkom:

Nechajte numtest \u003d 1,005; numtest.Tofixed (2); \u003e "1.00"
Výsledkom vyššie uvedeného výpočtu bolo 1,01, a nie 1. Ak sa chcete vyhnúť podobnej chybe, môžeme použiť riešenie navrhované Jackom L Moore, ktorý používa exponenciálne čísla na výpočet:

Funkčné kolo (číslo návratu (math.round (hodnota + e "+ desatinály) +" E - "+ Desimanti);)
Teraz:

Kolo (1.005,2); \u003e 1.01
Ak chcete spoľahlivejšie riešenie ako vyššie uvedené riešenie, môžete ísť na MDN.

Zaokrúhlenie stroja EPSILON

Do ES6 sa zaviedol alternatívny spôsob zaokrúhľovania desatinných čísel. Zaokrúhlenie zariadenia EPSILON poskytuje rozumný limit chyby pri porovnávaní dvoch častí plávajúceho bodu. Bez zaokrúhľovania môžu porovnávať výsledky ako nasledovne:

0,1 + 0.2 \u003d\u003d\u003d 0.3\u003e FALSE
Math.epsilon používame v našej funkcii, aby sme získali správne porovnanie:

Funkcia EPECHEST (X, Y) (RETURN MATHY.ABS (X - Y)< Number.EPSILON * Math.max(Math.abs(x), Math.abs(y)); }
Funkcia má dva argumenty: prvý - prúdový výpočet, druhý je očakávaným výsledkom. Vracia porovnanie dvoch:

EPECTHEST (0.1 + 0.2, 0,3)\u003e TRUE
Všetky moderné prehliadače už podporujú ES6 matematické funkcie, ale ak chcete získať podporu v prehliadačoch, ako napríklad IE 11, používajte PolyFLIKTY.

Zníženie frakčnej časti

Všetky vyššie uvedené metódy sú schopné zaokrúhliť až desatinné čísla. Aby ste mohli jednoducho odrezať číslo do dvoch príznakov po čiarke, musíte ho najprv znásobiť o 100 a potom získaný výsledok je už rozdelený do 100:

Funkcia Skrátená (NUM) (návrat Math.TRUNC (Num * 100) / 100;) Skrátené (3.1416)\u003e 3.14
Ak chcete prispôsobiť metódu ľubovoľného počtu bodkočiarky, môžete použiť dvojitý bitty popieranie:

Funkcia Skrátená (nechať numpowerconverter \u003d matematika (10, decond); návrat ~ ~ (numpowerconverter) / numpowerconverter;)
Teraz:

Nech randint \u003d 35.874993; Skrátené (randint, 3); \u003e 35.874.

Zaokrúhlenie na najbližšie číslo

Aby sme mohli zaokrúhliť desatinné číslo na najbližšie číslo vo viacerých alebo v menšej strane, v závislosti od toho, čo sme najbližšie, použite Math.round ():

Math.round (4.3)\u003e 4 Math.round (4.5)\u003e 5
Upozorňujeme, že "polovica hodnoty", 0,5 je zaokrúhlená vo veľkom smere podľa pravidiel matematiky.

Zaokrúhlenie na menšie na najbližšie celé číslo

Ak chcete vždy zaokrúhliť na menšej strane, použite Math.floor:

Math.floor (42.23); \u003e 42 Math.floor (36.93); \u003e 36.
Upozorňujeme, že zaokrúhľovanie v menších vedľajších prácach pre všetky čísla, vrátane negatívneho. Predstavte si mrakodrapu s nekonečným počtom podláh, vrátane nízkoúrovňových podláh (reprezentujúcich negatívne čísla). Ak ste vo výťahu na nižšej úrovni medzi 2 a 3 (čo je hodnota -2,5), Math.floor vás dodá na -3:

Math.floor (-2,5); \u003e -3.
Ale ak sa chcete vyhnúť podobnej situácii, použite Math.Trunc, podporované vo všetkých moderných prehliadačoch (okrem IE / EDGE):

Math.trunc (-41.43); \u003e -41
Polyfill na MDN nájdete v prehliadačoch Math.trunc v prehliadačoch a IE / EDGE.

Zaokrúhlenie na najbližšie celé číslo

Na druhej strane, ak vždy potrebujete zaokrúhliť až do najväčšieho, použite Math.CEIL. Opäť si pamätajte, že nekonečný výťah: Math.CEIL bude vždy stúpať, bez ohľadu na to, či je číslo negatívne alebo nie:

Math.CEIL (42.23); \u003e 43 Math.CEIL (36.93); \u003e 37 Math.CEIL (-36.93); \u003e -36

Zaokrúhlenie na väčšie / menšie číslo

Ak chceme zaokrúhliť až do najbližšieho čísla, viacerých 5, najjednoduchší spôsob, ako vytvoriť funkciu, ktorá rozdeľuje číslo na 5 zaokrúhľuje, a potom ho znásobuje na rovnakú sumu:

FUNKCIA CYBERTOTO5 (NUM) (RETURN MATHY.ROUND (NUM / 5) * 5;)
Teraz:

Rola5 (11); \u003e 10.
Ak chcete zaokrúhliť na viacnásobnú hodnotu, použijeme všeobecnejšiu funkciu tým, že prejde počiatočnú hodnotu a viacnásobne:

Funkcia RoundTomultiple (Num, Viacnásobné) (návrat Math.round (Num / Multiple) * Viac
Teraz:

Nechajte InicialNuber \u003d 11; Nechajte viac \u003d 10; Roundtomultiple (inicialnumber, viacnásobný); \u003e 10;

Upevnenie čísla v rozsahu

Existuje mnoho prípadov, keď chceme získať hodnotu X ležiace v rámci rozsahu. Môžeme napríklad potrebovať hodnotu od 1 do 100, ale zároveň sme dostali hodnotu 123. Aby sme ho opravili, môžeme použiť minimum (vráti najmenší počet čísel) a maximum ( Vracia najväčšiu z viacerých viacerých čísel). V našom príklade rozsah od 1 do 100:

Nechajte lowbound \u003d 1; Nechať hojnosť \u003d 100; Nechajte Numinput \u003d 123; Nechajte upnutý \u003d math.max (lowbound, math.min (numinput, hojnosť)); Konzola.log (upnutý); \u003e 100;
Opäť, môžeme znovu použiť operáciu a zabaliť do funkcie, používame riešenie navrhol Daniel X. MOORE:

Number.ProtototyPE.clamp \u003d Funkcia (min, max) (RETURN MATH MATH.min (Math.MAX (toto, min), max);););););););
Teraz:

Numinput.clamp (lowbound, hangbound); \u003e 100;

Zaokrúhľovanie

Gaussovou zaokrúhľovaním, tiež známy ako bankové zaokrúhľovanie, je to, že zaokrúhľovanie pre tento prípad sa vyskytuje na najbližšiu čiernu. Táto metóda zaokrúhľovania funguje bez štatistickej chyby. Najlepšie riešenie bolo navrhnuté Tim Down:

Funkcia GAUSPROUND (nechať d \u003d desinections || 0, m \u003d matematika (10, d), n \u003d + (d? Num * m: num) .Tofixed (8), i \u003d math.floor (n), f \u003d N - I, E \u003d 1E-8, R \u003d (F\u003e 0,5 - E && F< 0.5 + e) ? ((i % 2 == 0) ? i: i + 1) : Math.round(n); return d ? r / m: r; }
Teraz:

GAUSPROUND (2.5)\u003e 2 GAUSSROUND (3.5)\u003e 4 GAUSSROUND (2.57,1)\u003e 2.6
Desatinné znamenie v CSS:

Keďže JavaScript sa často používa na vytvorenie pozičnej konverzie HTML prvkov, môžete sa čudovať, čo sa stane, ak vygenerujeme desatinné hodnoty pre naše položky:

#Box (šírka: 63,667731993PX;)
Dobrou správou je, že moderné prehliadače zohľadnia desatinné hodnoty v blokovom modeli, aj v percentách alebo pixelových jednotkách merania.

Triedenie

Veľmi často musíme triediť všetky prvky, napríklad máme rad herných záznamov, zatiaľ čo oni by sa mali organizovať ako zostupný poradie hráčov. Bohužiaľ, metóda štandardnej triedenia () má niektoré úžasné obmedzenia: funguje dobre s často používanými anglickými slovami, ale okamžite prestávky na stretnutí s číslami, jedinečnými znakmi alebo slovami v hornej časti.

Zoradiť v abecednom poradí

Zdá sa, že triedenie pole abecedne by malo byť najjednoduchšou úlohou:

Nechajte ovocie \u003d ["Butternut Squash", "marhuľ", "cantaloupe"]; ovocie.sort (); \u003e "Marhuot", "Butternut Squash", "Cantaloupe"]
Sme však konfrontovaní s problémom, akonáhle jeden z prvkov je v hornom prípade:

Nech ovocie \u003d ["Butternut Squash", "Aprot", "Cantalope"]; ovocie.sort (); \u003e "Cantaloupe", "Aprot", "Butternut Squash"]
Je to spôsobené tým, že podľa predvolenej doby, triedič porovnáva prvý symbol prezentovaný v Unicode. Unicode je jedinečný kód pre akýkoľvek symbol, bez ohľadu na platformu, bez ohľadu na program, bez ohľadu na jazyk. Napríklad, ak sa pozriete cez tabuľku kódu, znak "A" je U + 0061 (v hexadecimálnom systéme 0x61), zatiaľ čo symbol "C" má kód U + 0043 (0x43), ktorý ide skôr v tabuľke Unicode ako symbol "A".

Ak chcete triediť pole, ktoré môžu obsahovať zmiešané registre prvých písmen, musíme buď previesť všetky položky, aby sme dočasne dočasne premenila do spodného registra, alebo určiť svoju poradie triedenia pomocou metódy LOCESECOMPARE () s niektorými argumentmi. Na takýto prípad je lepšie okamžite vytvoriť funkciu pre opakované použitie:

Funkcia Alphasart (ARR) (RETURN A.LOCALECOMPARE (B, EN ", (" Senzitulivosť ":" Základňa ")););) Nechajte ovocie \u003d [" Butternut Squash "," marhuľ "," Cantaloupe "]; Alphasart (ovocie)\u003e
Ak chcete získať pole zoradené do reverznej abecednej objednávky, jednoducho zmeňte pozície A a B na funkciu:

Funkcia alphasart (ARR) (RETURN B.LOCALECOMPARE (A, EN ", (" Senzitulivosť ":" Základňa "));));) Nechajte ovocie \u003d [" Butternut Squash "," Marhuot "," Cantaloupe "]; Alphasart (ovocie)\u003e ["Cantaloupe", "Butternut Squash", "Marhuot"]
Stojí za to zaplatiť pozornosť tomu, že LOCALECOMPARE sa používa s argumentmi, je stále potrebné si uvedomiť, že je podporovaný IE11 +, pre staršie IE verzie, môžeme ho použiť bez argumentov av dolnom registri:

Funkcia CAFEORT (ARR) (RETURN A.TOLOWASCASE (). LOCALECOMPARE (B.TOLOWASCASE ());));) Nech ovocie \u003d ["Butternut Squash", "marhuľ", "Cantaloupe"]; Jasior\u003e [Marhuot, "Butternut Squash", "Cantaloupe"]

Číselné triedenie

To všetko sa nevzťahuje na príklad, z ktorých sme hovorili o vyššie uvedenom množstve herných záznamov. S niektorými číselnými poliami, triedenie funguje len dokonale, ale v určitom bode môže byť výsledok nepredvídateľný:

Nechajte highscores \u003d; highscores.sort (); \u003e
Faktom je, že metóda triedenia () produkuje lexikografické porovnanie: a to znamená, že čísla budú prevedené na reťazec a porovnania budú opäť vykonané mapovaním prvého charakteru tohto reťazca v symboloch tabuľky Unicode. Preto musíme určiť svoju poradie triedenia:

Nechajte highscores \u003d; Highscores.sort (Návrat A - B;)); \u003e
Ak chcete triediť čísla v opačnom poradí, zmeňte polohy A a B na funkciu.

Zoradiť štruktúru JSON

A konečne, ak máme dátovú štruktúru podobnú JSON, zastúpená ako pole herných záznamov:

Nechať skóre \u003d [("názov": "Daniel", "skóre": 21768), ("Názov": "Michael", "Skóre": 33579), ("Názov": "Alison", "Skóre": 38395 )]];
V ESS6 + môžete použiť funkcie šípky:

Skóre.Sort ((A, B) \u003d\u003e B.Score - A.Score);
Pre staré prehliadače, ktoré nemajú takúto podporu:

Scores.sort (Návrat A.Score - B.Score);
Ako vidíte, triedenie v Javascript je celkom zrejmé veci, dúfam, že tieto príklady uľahčia život.

Práca s funkciami výkonu

Cvičenie je operácia, pôvodne definovaná ako výsledok viacnásobného násobenia prirodzeného čísla na sebe, druhá odmocnina čísla A je číslo dané na štvorcové. S týmito funkciami sme sa mohli neustále tešiť v každodennom živote v matematike, vrátane pri výpočte oblastí, zväzkov alebo dokonca fyzického modelovania.

V Javascript je funkcia napájania reprezentovaná ako math.POW (), v novom štandarde ES7 bol prezentovaný nový prevádzkovateľ cvičenia na titul - "* *".

Do stupňa

Aby ste mohli vybudovať číslo v N-UY Stupeň, použite funkciu Math.POW (), kde prvý argument je číslo, ktoré bude do určitej miery postavený do určitej miery, druhý argument je indikátorom stupňa:

Math.POW (3.2)\u003e 9
Takáto forma nahrávacieho prostriedku 3 na štvorcovom, alebo 3 x 3, čo má za následok výsledok 9. Môže byť podávaný ďalší príklad:

Math.POW (5.3); \u003e 125.
To znamená 5 na Kube alebo 5 × 5 × 5, rovný 125.

Ecmascript 7 je v zásade nasledujúca verzia Javascriptu, môžeme použiť nový navrhovaný prevádzkovateľ cvičenia do stupňa - * *, takáto forma nahrávania môže byť viac vizuálna:

3 ** 2 > 9
V súčasnosti je podpora pre tento operátor dosť obmedzená, takže sa neodporúča používať ho.

Výkonná funkcia môže byť užitočná v rôznych situáciách. Jednoduchý príklad, výpočet počtu sekúnd za hodinu: Math.POW (60.2).

Štvorcový a kubický koreň

Math.sqrt () a Math.cbrrt () sú oproti funkciám Math.POW (). Ako si pamätáme, druhá odmocnina čísla A je číslo, ktoré dáva, keď je námestie postavené.

Math.sqrt (9)\u003e 3
Zároveň kubický koreň čísla A je číslo, ktoré dáva, keď je kocka postavená.

Math.cbrrt (125)\u003e 5
Math.cbrrt () bol v poslednej dobe zavedený do špecifikácie JavaScript, a preto podporil len v moderných prehliadačoch: Chrome 38+, Firefox a Opera 25+ a Safari 7.1+. Všimnite si, že v tomto zozname chýba program Internet Explorer, nájdete však Polyfill na MDN.

Príklady

Samozrejme, môžeme používať a nie je celé číslo v jednej z týchto funkcií:

Math.POW (1,25, 2); \u003e 1.5625 Math.cbrrt (56,57)\u003e 3.8387991760286138
Upozorňujeme, že pri používaní negatívnych hodnôt argumentov funguje celkom dobre:

Math.POW (-5.2)\u003e 25 Math.POW (10, -2)\u003e 0.01
Avšak, pre druhého odmocniny to nebude fungovať:

Math.sqrt (-9)\u003e Nan
Z matematickej analýzy vieme, že pod imaginárnym číslom rozumejú štvorcové korene z záporných čísel. A to nás môže viesť k inej technike práce s komplexnými číslami, ale toto je ďalší príbeh.

Môžete použiť frakčné hodnoty v Math.POW () na nájdenie štvorcových a kubických koreňov. Hodnotný koreň používa indikátor 0,5:

Math.POW (5, 0,5); // \u003d math.sqrt (5) \u003d 5 ** (1/2)\u003e 2.23606797749979
Avšak, kvôli plávajúcemu bodu, nemôžete presne prevziať správny výsledok:

Math.POW (2.23606797749979,2)\u003e 5.000000000000001
V takýchto situáciách sa budete musieť uchýliť k odrezaniu značiek v číslach alebo zaokrúhľovaní na akúkoľvek hodnotu.

Niektoré, pre nezrozumiteľné dôvody v Javascriptovom zamietnutí Math.POW () Funkcia s Math.EXP (), ktorá je exponenciálna funkcia pre čísla ako celok. Poznámka: V angličtine je "Exponent" indikátor preložený ako "Exponent", takže sa skôr vzťahuje na anglicky hovoriace, hoci existujú alternatívne ukazovatele názvy, ako je index, sila.

Matematické konštanty

Práca s matematikou v Javascript je uľahčená množstvom zabudovaných konštánt. Tieto konštanty sú vlastnosti matematického objektu. Stojí za zmienku, že konštanty sú napísané v hornej časti, a nie camelcase notácia.

Na prieskume sa môžu zúčastniť iba registrovaní užívatelia. , Rado sa stalo.

Tagy: Pridať tagy

Technicky je termín "generátor náhodných čísel" absurdné, pretože samotné čísla nie sú náhodné. Napríklad 100 je náhodné číslo? A 25? V skutočnosti tento termín znamená, že je to, čo sa vytvorí sekvencia čísel. Týmto generuje ťažšiu otázku: Čo je poradie náhodných čísel? Jedinou správnou odpoveďou je: Sekvencia náhodných čísel je sekvencia, v ktorej sú všetky prvky nesúvisia. Táto definícia vedie k takémuto paradoxu, že akákoľvek sekvencia môže byť náhodná aj non-náhodná v závislosti od toho, ako sa táto sekvencia získa. Napríklad, ďalší riadok čísel
1 2 3 4 5 6 7 8 9 0
Získa sa tlačou horného radu klávesnice v poradí, takže sekvencia nemôže byť považovaná za náhodne generovanú. Ale ako sa dostanete rovnakú sekvenciu, odstránenie číslovaných tenisových loptičiek z barelu. V tomto prípade je už náhodne generovaná sekvencia. Tento príklad ukazuje, že šanca na sekvenciu závisí od toho, ako bolo získané, a nie z neho.

Nezabudnite, že postupnosť čísel vytvorených počítačom je určená: Každé číslo okrem prvého závisí od predchádzajúcich čísel. Technicky to znamená, že počítačom môže byť generovaný len kváznicový postup čísel, t.j. V skutočnosti nie sú naozaj náhodné. To však stačí pre väčšinu úloh a takéto sekvencie pre jednoduchosť sa nazývajú náhodne. Jedna veľmi zaujímavá metóda bola vyvinutá spoločnosťou John Background Neuman; Často sa nazýva RMS. V tejto metóde sa do námestia postaví predchádzajúce náhodné číslo a potom sa z výsledku uvoľňujú stredné čísla. Napríklad, ak vytvárate čísla troch číslic a predchádzajúce číslo bolo 121, výstavba námestia dáva výsledok 14641. Výber troch priemerných číslic dáva nasledujúce náhodné číslo 464. Nevýhodou tejto metódy je, že má Veľmi krátka doba opakovania, nazývaná cyklus. Z tohto dôvodu sa táto metóda nepoužíva dnes. Moderné metódy na generovanie náhodných čísel sú oveľa zložitejšie.

Náhodné čísla v php

Existujú dve skupiny funkcií s náhodnými číslami v PHP. Čisto externe, môžu byť odlíšené MT_ prefix vo všetkých funkciách jednej zo skupín.

Outdated Funkcie
Funkciu RAND. Vráti celé číslo od nuly na hodnotu Rand_max (ktorá je rovná 32767). Môže mať dve voliteľné celé parametre - ak sú zadané, potom sa z prvého parametra vygeneruje náhodné číslo.

Echo rand (); Echo Rand (1 100); // Uveďte náhodné číslo od 1 do 100

Funkcia SRAND. Nastaví sekvenciu náhodných čísel vydaných funkciou RAND. Má celý parameter - s rôznymi hodnotami tohto parametra Rand bude produkovať rôzne sekvencie čísel. Funkcia SRAND je dostatočná na to, aby zavolala len raz pred všetkými výzvami funkcie RAND. Príklad použitia:

SRAND (1288); // inicializácia generátora náhodných čísel ($ i \u003d 0; $ i<5;$i++){ echo rand(); echo "
"; }

Pozor! Od verzie PHP 4.2.0 nemusíte spôsobiť, že SRAND () - PHP to automaticky.
Funkcia GETRANDMAX (). Vracia hodnotu maximálneho náhodného čísla (32767).

Funkcie druhej skupiny (s prefixom MT_)
Ich mená a akcie sú podobné funkciám prvej skupiny - MT_RAND, MT_SRAND a MT_GETRANDMAX. Hlavným rozdielom je, že náhodné čísla sú prevzaté zo širšieho rozsahu: od 0 do 2 19937 - 1. Okrem toho tieto funkcie fungujú výrazne rýchlejšie ako staré analógy, pretože generátor náhodných čísel používa Mersenne Twister, vyvinutý v roku 1997 japonskými vedci. Preto prefix mt_ (mersenne twister).
Príklad použitia:

// vydávame náhodné číslo od 1000 do 2000 ECHO MT_RAND (1000, 2000);

Náhodné čísla v JavaScript

Náhodné číslo v Javascript Môžete generovať s Math.Random (). Bude to však frakčné číslo v rozsahu od 0 do 1 (nie vrátane 0 a 1). Ak chcete generovať náhodné celé číslo v požadovanom rozsahu, je potrebné napísať svoju funkciu

Popis

Metóda Math.Random () vráti pseudo-náhodné číslo medzi 0 a 1.

Pseudo-náhodné číslo je vytvorené v rozsahu od 0 (vrátane) do 1 (výhradne), to znamená, že číslo návratu môže byť nula, ale vždy bude menej ako jeden.

Ak chcete zaokrúhliť číslo plávajúceho bodu do celku, môžete použiť napríklad metódou Math.floor ().

Syntax

Math.Random ()

Návratová hodnota

  • Číslo plávajúceho miesta V rozsahu od 0 (vrátane) do 1 (výlučne).

Math.Random () metóda sa používa hlavne na generovanie pseudo-náhodného čísla v špecifickom rozsahu. Napríklad musíme získať číslo v rozsahu od 50 do 100 (vrátane). Na to budeme musieť napísať nasledujúci kód:

Dokument.write (Math.floor (Math.Random () * 51 + 50));

Podrobne zvážte, ako naše príklad funguje a prečo sa používa takáto forma nahrávania. Po prvé, musíme špecifikovať minimálnu hodnotu z požadovaného rozsahu, v našom príklade je to číslo 50. Teraz musíme nejako získať náhodné číslo, ktoré pri pridávaní s číslom 50 neprekračuje číslo 100. Ako vieme z matematiky, nájdenie neznámej zložky je vyrobená odčítaním zo súčtu známeho obvinenia. 100 - 50: Dostaneme rozdiel 50. Teraz na kontrolu, toto číslo sa k nám približuje, alebo nie, vynásobí ho pre možné minimálne a maximálne číslo vrátené Math.Random (). Vynásobte minimálne 0,004704564176082244 * 50 \u003d 0,2 ... a maximálne 0,9999999999746223 * 50 \u003d 49,9 ... A tak vidíme, že pri násobení rozdielu pre maximálne možné náhodné číslo v dôsledku toho nám dáva celú časť čísla jednotka nižšia, ako je potrebné. Ak chcete opraviť situáciu, musíme len pridať jednu jednotku na 50, t.j. 50 + 1 \u003d 51, teraz, ak sa získané číslo vynásobí maximálne možné, počet 50,9 bude vrátený metódou 50,9 ... - to je to, čo potrebujeme, po pridaní čísel 50,9 + 50, dostaneme 100,9. Ak chcete zaokrúhliť číslo do celku, použite metódu Math.floor (). Vzorec na získanie požadovaného čísla je teda nasledovná: Max - Min + 1. ZAPÍNAŤ Vyššie uvedený príklad:

Var max \u003d 100, min \u003d 50; Dokument.write (Math.floor (Math.Random () * (max - min + 1) + min));

Tento vzorec je obzvlášť užitočný, keď nie je vopred známy, v ktorom rozsahu je potrebné získať náhodné číslo.

Príklad

Názov dokumentu

Pseudo-náhodné číslo v rozsahu od 1 do 10.





Páči sa vám článok? Zdieľaj to