Računalniki Windows Internet

Uporaba naključne funkcije PHP. Naključna izbira iz niza v php php naključno celo število

Za ustvarjanje naključnega števila lahko uporabite PHP -jevo funkcijo rand () ali mt_rand (). Zahteva po uporabi naključnih števil se v praksi pogosto pojavi pri poimenovanju spremenljivk, datotek, ustvarjanju ključnih informacij in zagotavljanju varnosti.

Naključnost in edinstvenost

Naključna funkcija PHP je na voljo v dveh različicah: rand () in mt_rand (). Menijo, da je algoritem v prvem primeru preprostejši in generira psevdonaključna števila. Druga možnost ima hitrejši in znani algoritem matematične značilnosti... V večini primerov, ko morate dobiti naključno številko, lahko uporabite vrsto naključnih klicev PHP in dobite edinstveno kombinacijo številk.

Če za osnovo vzamete številke od 1 do 26 ali od 1 do 32, jih dobite naključno, lahko ključne informacije oblikujete kot zaporedje latiničnih ali cirilicnih črk. V tem primeru je naključni PHP način ustvarjanja zaporedja abecednih informacij, na primer za testiranje komunikacijskih kanalov ali algoritmov.

Naključno število je redko edinstveno, saj se lahko pojavi večkrat glede na porazdelitev naključne spremenljivke. Če pa združimo zlasti statično Spremenljivka PHP& Math.random JavaScript, lahko dobite resnično edinstveno naključno število, ki se sčasoma ne bo ponavljalo.

Uporaba funkcije časa

Funkcija časa, tako PHP kot JavaScript, vam omogoča, da oblikujete edinstvene kombinacije števil, redko ko se lahko v nekem trenutku zgodi dovolj veliko število dogodkov in naključna vrednost se bo ponovilo.

Z uporabo naključnega PHP v obsegu sekund ali milisekund v širokem razponu možnih vrednosti lahko dobite edinstvene naključne kombinacije številk ali črk. Kaj drugega?

Če združite vrednost časovne funkcije, zaporedno naraščajočega števila in naključnega PHP ali pa zagotovite zanesljivo varnost komunikacijskih kanalov odjemalca in strežnika, ustvarite edinstvene kode za spremenljivke generirajte nepredvidljive dogodke v algoritmih.

Generator naključnih števil PHP je odlična rešitev za večino nalog, še posebej, če morate hitro doseči kakovostne rezultate z minimalnimi stroški. Uporaba funkcij rand () in mt_rand v povezavi z zaporedno naraščajočimi vrstami števil ali časovnimi vrednostmi vam omogoča, da dobite naključna števila, ki se ponavljajo po vrednosti in so edinstvena.

Pozdravljeni vsi skupaj! V tem članku bomo pogledali, kaj je novega za ustvarjanje naključnih števil v PHP 7.1.

Ta posodobitev je bila za razvijalce nevidna, vendar je izboljšala programski jezik PHP na področju generiranja naključnih števil.

Kolikor je znano, v PHP lahko uporabimo funkcijo rand (min, max) za ustvarjanje naključnih števil:

Odmevni rand (7, 17);

Če stran osvežite, boste vsakič prejeli novo naključno številko.

Vendar ni vse tako preprosto, kot se morda zdi. Bistvo je, da je funkcija odvisna od tega, za kaj ustvarjate naključno število rand () uporablja različne sisteme generacijo. Tisti. odvisno od sistema, v katerem se uporablja. Nekateri sistemi lahko uporabljajo šibke metode generiranja, zato ne boste prejeli povsem naključnih števil.

V PHP 7.1 to težavo smo odpravili in dodali funkcijo mt_rand ():

Odmev mt_rand (7, 17);

Ta funkcija deluje veliko bolje, vključno z varnostjo. Pomembno je vedeti tudi, da če uporabljate funkcijo rand () v PHP 7.1, se samodejno prepiše na mt_rand ()... Tisti. rand () zdaj samo vzdevek za mt_rand ().

Številne druge funkcije za pridobivanje naključnih rezultatov so bile izboljšane PHP 7.1... Na primer, poglejmo, kako lahko dobimo naključno vrednost iz matrike:

$ names = ["Ivan", "Aleksander", "Vasilij"];
echo $ names;

Tisti. vse funkcije, kot je ta, so bile izboljšane za izdelavo bolj kakovostnih naključnih števil PHP 7.1... Da, ta posodobitev je ostala neopažena, toda ne glede na jezik, v katerem pišete, je zelo pomembno razumeti, kaj se dogaja znotraj funkcije in kako se obnaša.

Naloga
Ustvariti morate naključno število v številskem območju.

Rešitev
Za to je funkcija mt_rand ():

// naključno število med $ zgornjo in $ spodnjo, vključno
$ random_number = mt_rand ($ spodnji, $ zgornji);

Diskusija
Generiranje naključnih števil je uporabno, ko morate prikazati naključno sliko, naključno dodeliti izhodišče v igri, izbrati naključni vnos iz baze podatkov ali ustvariti edinstven identifikator sejo. Če želite ustvariti naključno število med dvema točkama, morate funkciji mt_rand () posredovati dva argumenta:

$ naključno_število = mt_rand (1, 100);

Klicanje mt_rand () brez argumentov vrne število med ničlo in največjim naključnim številom, ki ga vrne mt_getrandmax (). Računalnik težko ustvari resnično naključno število. Je veliko boljši pri metodičnem upoštevanju navodil in ni tako dober pri spontanih dejanjih. Če morate računalnik prisiliti, da ustvari naključno število, mu morate dati določen nabor ponovljivih ukazov, medtem ko je že zaradi dejstva ponovitve manjša verjetnost, da bo dosežena naključnost.

PHP ima dva različna generatorja naključnih števil: klasično funkcijo, imenovano rand (), in naprednejšo funkcijo mt_rand ().

MT (Mersenne Twister) je generator psevdo naključnih števil, imenovan po francoskem menihu in matematiku Marinu Mersennu, ki je preučeval praštevila. Algoritem tega generatorja temelji na teh praštevilih. Funkcija mt_rand () je hitrejša od funkcije rand () in proizvaja več naključnih števil, zato imamo raje prve.

Če je vaša različica PHP starejša od 4.2, morate pred prvim klicem funkcije mt_rand () (ali rand ()) prvič inicializirati generator z začetno vrednostjo tako, da pokličete mt_srand () (ali srand ()) funkcijo. Seme je število, ki ga naključna funkcija uporabi kot osnovo za ustvarjanje naključnih števil, ki jih vrne; nanaša se na način razreševanja zgornje dileme - ponavljanje proti naključnosti.

Kot začetno vrednost, ki se zelo hitro in z majhno verjetnostjo ponovljivosti (to so lastnosti, ki bi jih morala označiti dobra začetna vrednost), lahko vzamete vrednost, ki jo vrne zelo natančna časovna funkcija microtime (). Dovolj je, da generator enkrat inicializirate. PHP 4.2 in novejši samodejno obravnava inicializacijo, če pa je začetna vrednost ročno nastavljena pred prvim klicem na mt_rand (), jo PHP ne nadomesti z lastno začetno vrednostjo.

Če morate iz zbirke podatkov izbrati naključni zapis, je najlažji način, da najprej določite skupno število polj v tabeli, izberete naključno število iz tega območja in nato povprašate to vrstico iz baze podatkov:

$ sth = $ dbh-> poizvedba ("SELECT COUNT (*) AS count FROM OF quotes");
if ($ row = $ sth-> fetchRow ()) (
$ count = $ vrstica;
) drugo (
die ($ row-> getMessage ());
}
$ random = mt_rand (0, $ count - 1);
$ sth = $ dbh-> poizvedba ("SELECT quote FROM quotes LIMIT $ random, 1");
medtem ko ($ row = $ sth-> fetchRow ()) (
natisni $ row.

"\ n";
}

Ta del kode določa skupno število vrstic v tabeli, ustvari naključno število iz tega območja in nato uporabi LIMIT $ random, 1, da izbere eno vrstico iz tabele, začenši pri $ random. V različici MySQL 3.23 ali novejši je možna alternativa:

$ sth = $ dbh-> poizvedba ("SELECT quote FROM quotes ORDER BY RAND () LIMIT 1");
medtem ko ($ row = $ sth-> fetchRow ()) (
natisni $ row. "\ n";
}

V tem primeru MySQL najprej randomizira vrstice in nato vrne prvo vrstico.

Nekajkrat so me že vprašali, kako mi gre naključni izpis narekovajev na moji spletni strani v bloku " Pametni citati"Nadalje mi je uspelo ugotoviti, da je tukaj problem pomanjkanje razumevanja ljudi, kako izvleči naključni element iz matrike v php... Naloga je preprosta, a kljub temu, ker se pojavljajo vprašanja, morate nanje odgovoriti.

Takoj vam bom dal kodo. Recimo, da obstaja matrika z nizom narekovajev. Izbrati morate eno naključno in izpisati:

$ quotes = array (); // Inicializiramo prazno polje
$ quotes = "Bodite pozorni na svoje misli, so začetek dejanj."; // Prvi citat
$ quotes = "Ne preživi najpametnejši ali najmočnejši, ampak najbolj dovzeten za spremembe."; // Drugi citat
$ quotes = "Življenje je gora: počasi greš gor, hitro se spuščaš."; // Tretji citat
$ quotes = "Ljudje ne želijo biti bogati, ljudje želijo biti bogatejši od drugih."; // Četrti citat
$ number = mt_rand (0, count ($ narekovaji) - 1); // Vzemimo naključno število od 0 do (dolžina niza minus 1) vključno
echo $ quotes [$ number]; // Prikaz citata
?>

Ključni trenutek- to je pridobivanje naključnega števila... Vse kar morate storiti je, da postavite pravilne meje. Če morate izbrati naključni element vzdolž celotne dolžine matrike, je to od 0 prej ( dolžina matrike minus 1). In potem samo izvlecite element iz matrike z nastalim naključnim indeksom.

Kar zadeva nalogo s narekovaji, jih je bolje shraniti v zbirko podatkov. Načeloma, če je spletno mesto zelo preprosto, je to mogoče v besedilno datoteko... Če pa je v bazi podatkov, je bolje uporabiti RAND () in OMEJITEV v Poizvedba SQL tako da takoj dobite enotno in naključno ponudbo iz baze podatkov.