Php on paras satunnaislukugeneraattori. Satunnainen valinta PHP:n taulukosta. Satunnaiset luvut PHP:ssä

Alustaa satunnaislukugeneraattorin. Syntaksi:

Tyhjä srand (int siemen)

Alustaa satunnaislukugeneraattorin siemenarvolla.

Srand((kaksois) mikroaika()*1000000);
$random = rand();
echo $random;

GETRANDMAX

Palauttaa suurimman mahdollisen satunnaisluvun. Syntaksi:

Int getrandmax()

Tämä funktio palauttaa suurimman arvon, joka voidaan saada käyttämällä satunnaislukujen generointifunktiota rand().

Yleensä se on 32767

Luo satunnaisluvun. Syntaksi:

Int rand()

Kun tätä toimintoa kutsutaan valinnaisilla min- ja max-parametreilla, se luo satunnaisluvun näihin parametreihin asti. Jos minimi- ja max-parametrit puuttuvat, palautetaan luku välillä 0 - RAND_MAX.

Jotta tämä toiminto toimisi oikein, sinun on alustettava satunnaislukugeneraattori srand()-funktiolla ennen sen käyttöä.

lcg_value()

LCG pseudosatunnaislukugeneraattori (PHP 4, PHP 5)

Kuvaus:

Kelluva lcg_value (void)

lcg_value() palauttaa näennäissatunnaisen luvun alueella (0, 1). Funktio yhdistää kaksi generaattoria 2^31 - 85 ja 2^31 - 249 jaksossa.

mt_getrandmax()

Näyttää suurimman mahdollisen satunnaisarvon (PHP 3 >= 3.0.6, PHP 4, PHP 5)

Kuvaus:

Int mt_getrandmax (tyhjä)

Näyttää enimmäisarvon, jonka mt_rand() voi palauttaa

mt_rand()

Luo parhaan satunnaisarvon (PHP 3 >= 3.0.6, PHP 4, PHP 5)

Kuvaus:

int mt_rand()

Monilla satunnaislukugeneraattoreiden vanhemmilla versioilla on kyseenalaisia ​​ominaisuuksia ja ne ovat hitaita. Oletuksena PHP käyttää rand()-funktiota satunnaislukujen luomiseen. Funktio mt_rand() on hyvä vaihtoehto. Se käyttää satunnaislukugeneraattoria, joka on 4 kertaa nopeampi kuin rand() ja käyttää Mersenne Twisteriä.

Ilman valinnaisia ​​min- ja max-argumentteja kutsuttu mt_rand() palauttaa näennäissatunnaisen arvon, joka vaihtelee välillä 0 ja RAND_MAX. Jos haluat saada esimerkiksi satunnaisia ​​arvoja väliltä 5-15, etsi mt_rand (5, 15).

Esimerkki mt_rand()

Tämän esimerkin suorittamisen tulos on seuraavanlainen:

1604716014
1478613278
6

Kommentti

Huomautus: Versiossa 3.0.7 aiemmissa versioissa funktion toinen parametri määritti numeroalueen. Esimerkiksi saadaksesi satunnaislukuja väliltä 5 ja 15 näissä versioissa sinun on määritettävä mt_rand(5, 11)-funktio.

mt_srand()

Asettaa parhaan satunnaislukugeneraattorin alkuarvon (PHP 3 >= 3.0.6, PHP 4, PHP 5)

Kuvaus:

Void mt_srand()

Asettaa satunnaislukugeneraattorin alkuarvon siemenellä. PHP 4.2.0:sta lähtien siemen on valinnainen ja satunnaisten arvojen oletusasetukset jätetään pois.

Esimerkki mt_srand()

Huomautus: PHP 4.2.0:sta lähtien satunnaislukugeneraattoria ei enää tarvitse alustaa komennoilla srand() tai mt_srand(), koska tämä tapahtuu nyt automaattisesti.

Teknisesti termi "satunnaislukugeneraattori" on hölynpölyä, koska luvut itsessään eivät ole satunnaisia. Onko esimerkiksi 100 satunnainen luku? Entä 25? Tämä termi itse asiassa tarkoittaa, että se luo numerosarjan, joka ilmestyy satunnaisesti. Tämä herättää vaikeamman kysymyksen: mikä on satunnaislukujen sarja? Ainoa oikea vastaus: satunnaislukujono on sarja, jossa kaikki elementit eivät liity toisiinsa. Tämä määritelmä johtaa paradoksiin, että mikä tahansa sekvenssi voi olla joko satunnainen tai ei-satunnainen riippuen siitä, kuinka sekvenssi saadaan. Esimerkiksi seuraava numerosarja
1 2 3 4 5 6 7 8 9 0
on saatu kirjoittamalla näppäimistön ylärivi järjestyksessä, joten sekvenssiä ei voida pitää satunnaisesti generoituna. Mutta entä jos saat saman sarjan, kun otat numeroidut tennispallot ulos piippusta? Tässä tapauksessa se on jo satunnaisesti luotu sekvenssi. Tämä esimerkki osoittaa, että sekvenssin satunnaisuus riippuu siitä, miten se on saatu, eikä itse sekvenssistä.

Muista, että tietokoneella luotu numerosarja on deterministinen: jokainen luku ensimmäistä lukuun ottamatta riippuu sitä edeltävistä luvuista. Teknisesti tämä tarkoittaa sitä, että tietokone pystyy generoimaan vain näennäisen satunnaisen numerosarjan, ts. itse asiassa ne eivät ole todella satunnaisia. Tämä kuitenkin riittää useimpiin tehtäviin ja yksinkertaisuuden vuoksi tällaisia ​​sekvenssejä kutsutaan satunnaisiksi. John von Neumann kehitti yhden erittäin mielenkiintoisen menetelmän; sitä kutsutaan usein neliökeskiarvoksi. Tässä menetelmässä edellinen satunnaisluku neliöidään ja keskimmäiset numerot erotetaan tuloksesta. Jos esimerkiksi luot kolminumeroisia lukuja ja edellinen luku oli 121, tuloksen neliöiminen antaa tulokseksi 14641. Keskimmäisten kolmen numeron neliöiminen antaa seuraavan satunnaisluvun 464. Tämän menetelmän haittana on, että siinä on hyvin lyhyt toistojakso, jota kutsutaan sykliksi. Tästä syystä tätä menetelmää ei käytetä nykyään. Nykyaikaiset menetelmät satunnaislukujen generoimiseksi ovat paljon monimutkaisempia.

Satunnaiset luvut PHP:ssä

PHP:ssä on kaksi funktioryhmää satunnaislukujen kanssa työskentelemiseen. Puhtaasti ulkoisesti ne voidaan erottaa mt_-etuliitteellä yhden ryhmän kaikkien toimintojen osalta.

Vanhentuneet ominaisuudet
rand-funktio Palauttaa kokonaisluvun nollan ja arvon RAND_MAX (joka on 32767) välillä. Voi sisältää kaksi valinnaista kokonaislukuparametria - jos ne on määritetty, ensimmäisestä parametrista toiseen luodaan satunnaisluku.

Echo rand(); kaikurand (1 100); // Anna satunnaisluku väliltä 1-100

Toiminto srand. Määrittää rand-funktion tuottamien satunnaislukujen sarjan. Siinä on koko parametri - tämän parametrin eri arvoille rand tuottaa erilaisia ​​numerosarjoja. Srand-funktiota tarvitsee kutsua vain kerran ennen kaikkia rand-funktion kutsuja. Käyttöesimerkki:

Srand(1288); // Alusta satunnaislukugeneraattori for($i=0; $i