Ang Php ay ang pinakamahusay na generator ng random na numero. Random na pagpili mula sa isang array sa PHP. Mga random na numero sa PHP

Sinisimulan ang random number generator. Syntax:

Void srand(int seed)

Sinisimulan ang random number generator na may seed value.

Srand((double) microtime()*1000000);
$random = rand();
echo $random;

GETRADMAX

Ibinabalik ang pinakamalaking posibleng random na numero. Syntax:

Int getrandmax()

Ibinabalik ng function na ito ang maximum na value na maaaring makuha gamit ang rand() random number generation function.

Kadalasan ito ay 32767

Bumubuo ng random na numero. Syntax:

Int rand()

Kapag tinawag gamit ang opsyonal na min at max na mga parameter, ang function na ito ay bumubuo ng random na numero hanggang sa at kasama ang mga parameter na iyon. Kung nawawala ang min at max na mga parameter, ibabalik ang isang numero mula 0 hanggang RAND_MAX.

Para gumana nang tama ang function na ito, bago ito gamitin, kailangan mong simulan ang random number generator gamit ang srand() function.

lcg_value()

LCG pseudo-random number generator (PHP 4, PHP 5)

Paglalarawan:

Float lcg_value (walang bisa)

Ang lcg_value() ay nagbabalik ng pseudorandom na numero sa hanay (0, 1). Pinagsasama ng function ang dalawang generator na may 2^31 - 85 at 2^31 - 249 sa isang panahon.

mt_getrandmax()

Ipinapakita ang pinakamalaking posibleng random na halaga (PHP 3 >= 3.0.6, PHP 4, PHP 5)

Paglalarawan:

Int mt_getrandmax (walang bisa)

Ipinapakita ang maximum na halaga na maaaring ibalik ng mt_rand()

mt_rand()

Bumubuo ng pinakamahusay na random na halaga (PHP 3 >= 3.0.6, PHP 4, PHP 5)

Paglalarawan:

int mt_rand()

Maraming mga mas lumang bersyon ng random number generators ay may mga kaduda-dudang katangian at mabagal. Bilang default, ginagamit ng PHP ang rand() function upang makabuo ng mga random na numero. Ang mt_rand() function ay isang magandang kapalit. Gumagamit ito ng random number generator na 4 na beses na mas mabilis kaysa rand() at gumagamit ng Mersenne Twister.

Tinatawag na walang opsyonal na min at max na mga argumento, ang mt_rand() ay nagbabalik ng pseudo-random na halaga na nasa pagitan ng 0 at RAND_MAX. Kung kailangan mong makakuha, halimbawa, mga random na halaga sa pagitan ng 5 at 15 kasama, hanapin ang mt_rand (5, 15).

Halimbawa ng paggamit ng mt_rand()

Ang resulta ng pagpapatakbo ng halimbawang ito ay magiging ganito:

1604716014
1478613278
6

Magkomento

Tandaan: Sa mga bersyon bago ang 3.0.7, tinukoy ng pangalawang parameter ng function ang hanay ng mga numero. Halimbawa, upang makakuha ng mga random na numero sa pagitan ng 5 at 15 sa mga bersyong ito kailangan mong tukuyin ang function na mt_rand(5, 11).

mt_srand()

Itinatakda ang paunang halaga ng pinakamahusay na generator ng random na numero (PHP 3 >= 3.0.6, PHP 4, PHP 5)

Paglalarawan:

Walang bisa mt_srand()

Itinatakda ang paunang halaga ng random number generator gamit ang seed. Sa PHP 4.2.0, ang seed ay opsyonal at ang mga default na setting para sa mga random na halaga ay tinanggal.

Halimbawa ng paggamit ng mt_srand()

Tandaan: Simula sa PHP 4.2.0, hindi na kailangang simulan ang random number generator na may srand() o mt_srand(), dahil awtomatiko na itong ginagawa.

Sa teknikal, ang terminong "random number generator" ay walang kapararakan, dahil ang mga numero mismo ay hindi random. Halimbawa, ang 100 ba ay isang random na numero? Paano kung 25? Ang aktwal na ibig sabihin ng terminong ito ay lumilikha ito ng pagkakasunod-sunod ng mga numero na random na lumilitaw. Nagtataas ito ng mas mahirap na tanong: ano ang pagkakasunod-sunod ng mga random na numero? Ang tanging tamang sagot: ang pagkakasunod-sunod ng mga random na numero ay isang pagkakasunud-sunod kung saan ang lahat ng mga elemento ay walang kaugnayan. Ang kahulugan na ito ay humahantong sa kabalintunaan na ang anumang pagkakasunud-sunod ay maaaring maging random o hindi random, depende sa kung paano nakuha ang pagkakasunud-sunod. Halimbawa, ang sumusunod na string ng mga numero
1 2 3 4 5 6 7 8 9 0
ay nakuha sa pamamagitan ng pag-type sa tuktok na linya ng keyboard sa pagkakasunud-sunod, kaya ang sequence ay hindi maaaring ituring na random na nabuo. Ngunit paano kung makakuha ka ng parehong pagkakasunud-sunod kapag kinuha mo ang may bilang na mga bola ng tennis mula sa bariles. Sa kasong ito, isa na itong random na nabuong sequence. Ipinapakita ng halimbawang ito na ang randomness ng isang sequence ay depende sa kung paano ito nakuha, at hindi sa sequence mismo.

Tandaan na ang pagkakasunud-sunod ng mga numero na binuo ng computer ay deterministiko: ang bawat numero maliban sa una ay nakadepende sa mga numero bago nito. Sa teknikal, nangangahulugan ito na isang quasi-random na pagkakasunud-sunod ng mga numero lamang ang maaaring mabuo ng isang computer, i.e. sa katunayan sila ay hindi tunay na random. Gayunpaman, ito ay sapat na para sa karamihan ng mga gawain at para sa pagiging simple ang mga naturang pagkakasunud-sunod ay tatawaging random. Isang napaka-kagiliw-giliw na paraan ay binuo ni John von Neumann; madalas itong tinatawag na root mean square. Sa pamamaraang ito, ang nakaraang random na numero ay naka-squad, at pagkatapos ay ang mga gitnang digit ay nakuha mula sa resulta. Halimbawa, kung lumilikha ka ng mga numero na may tatlong digit, at ang dating numero ay 121, ang pag-square sa resulta ay nagbibigay ng resulta na 14641. Ang pag-square sa gitnang tatlong digit ay nagbibigay ng susunod na random na numero na 464. Ang kawalan ng pamamaraang ito ay mayroon itong isang napakaikling panahon ng pag-uulit, na tinatawag na cycle . Para sa kadahilanang ito, ang pamamaraang ito ay hindi ginagamit ngayon. Ang mga modernong paraan ng pagbuo ng mga random na numero ay mas kumplikado.

Mga random na numero sa PHP

Ang PHP ay may dalawang pangkat ng mga function para sa pagtatrabaho sa mga random na numero. Puro panlabas, maaari silang makilala sa pamamagitan ng mt_ prefix para sa lahat ng mga function ng isa sa mga grupo.

Mga hindi na ginagamit na feature
rand function Nagbabalik ng integer sa pagitan ng zero at ang halaga ng RAND_MAX (na 32767). Maaaring magkaroon ng dalawang opsyonal na parameter ng integer - kung tinukoy ang mga ito, bubuo ng random na numero mula sa unang parameter hanggang sa pangalawa.

Echo rand(); echo rand(1,100); // Magbigay ng random na numero mula 1 hanggang 100

Function srand. Tinutukoy ang pagkakasunud-sunod ng mga random na numero na ginawa ng rand function. Mayroon itong isang buong parameter - para sa iba't ibang mga halaga ng parameter na ito, ang rand ay gagawa ng iba't ibang mga pagkakasunud-sunod ng mga numero. Ang srand function ay kailangan lamang na tawagan nang isang beses bago ang lahat ng mga tawag sa rand function. Halimbawa ng paggamit:

Srand(1288); // Simulan ang random number generator para sa ($i=0; $i