Mi a gond a php rand () függvénnyel?
Generáltam 10000 számot (1,2 lehetett) és azt vettem észre , hogy miután összeszámoltam a leghosszabb sorozatokat rendre 11 vagy 14 lett az eredmény.
Tehát vagy 11 vagy 14(legeneráltam vagy 100 esetet-tehát 100*10000 számot) a leghosszabb azonos szám sorozat egymás után. Először azt hittem ,hogy valamit elrontok az összeszámolásnál , de nem találtam hibát, minden számlálóm tökéletesen működött. Erre kipróbáltam az mt_rand() függvényt és ezzel meg sikerült 11,12..16,17.. max hosszúságú sorozatokat generálnom.
Miért? Miért nem hajlandó a rand() 15ször ugyanazt a számot kiadni soha?
Mert a rand és mt_rand által visszaadott értékek nem igazi véletlen számok, csak pszeudo random számok.
A 2 közül az mt_rand "okosabb", de még igy sem igazi véletlen.
Hiába generálsz 1 és 2 közül, nagyjából azt csinálhatja a függvény, hogy rand(0, RAND_MAX)%2+1
Valószínűleg lineáris kongruencia generátor, mint ahogy az összes többi egyszerűbb random függvény.
Ezekről itt egy kis szösszenet, de érdemes még keresgetni:
Az mt_rand-ban az mt a "Mersenne Twister" rövidítése, az már kicsit(sokkal) jobb, de nem valódi véletlenszám az sem.
Értem én ,hogy nincs 100%-ban random szám, viszont attól még léteznie kellene matematikailag hosszútávon bármekkora sorozatnak.
Olyan mintha a 14. azonos szám után 100%-ban jön be a másik szám
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!