Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Rzetelność metody rand()
Forum PHP.pl > Inne > Hydepark
no-name
Na ile wynik zwracany przez funkcję rand() jest w istocie losowy? Czy ulega on fluktuacjom w zależności od czynników środowiskowych? (kompilacja php, os serwera, etc...)
mike
Odnoszę wrażenie, że:
1. ... albo pytasz o co innego niż Ci się wydaje. Może wstawiłeś złą nazwę funkcji do posta? Na pewno chodzi o round() ?
2. ... albo zakończyłeś edukację z matematyki w szkole ... nie, cofam, w podstawówce też tego uczyli tongue.gif

W zaokrąglaniu nie ma żadnej losowości.

Przenoszę to na Przedszkole.
dr_bonzo
rand()" title="Zobacz w manualu php" target="_manual?

(tongue.gif jak koduje to czesto myle nazwy tych funkcji smile.gif)
Cysiaczek
heh, php i JS chyba używają z tego samego algorytmu, bo jak sie robi rand na podstawie czasu, to w obu językach wychodzą identyczne liczby losowe. Kiedyś tak robiłem dla porównania i byłem zdziwiony smile.gif

W komputerach nie ma prawdziwych liczb losowych - te podobno uzyskje się z zużytych taśm magnetycznych z TV i radia.

Pozdrawiam.
suck
temat losowosci jest fajnie omowiony w ksiazce "Cisza w sieci" polecam
TomASS
Cytat
W komputerach nie ma prawdziwych liczb losowych

Masz rację, w komputerach są liczby "pseudolosowe". Uzyskanie liczb "czysto losowych" przez program komputerowy jest bardzo trunde. (ponoć tongue.gif )
no-name
oczywiście chodziło mi o rand() smile.gif Późno już.

mike_mech: W przedszkolu raczej ten temat nikogo nie zajmie... Ale skoro jesteś taaaki mądry, to może podasz mi jakieś wartości współczynniki rzetelności dla standaryzowanego rozkładu średnich z prób dla tej instrukcji ? No chyba że Ciebie w szkole o takich rzeczach nie uczyli smile.gif

Cysiaczek: Tak, to IMO te same metody wzięte (chyba) żywcem z C. Ale na etapie implementacji mogły następować jakieś zmiany, lub uproszczenia w algorytmie. Dlatego pytam. A "prawdziwe" liczby losowe bierze się ze specjalnych tablic. Metoda przedpotopowa, ale nadal się ją stosuje.
mike
Hehe, masz trochę racji.
Tu nikogo to nie zainteresuje.

Ale to będzie rozmowa bardzo teoretyczna, więc dam to na Hydepark bo z php tez nie za bardzo ma coś wspólnego.

Są dwa najpopularniejsze sposoby generowania liczb losowych, wspomniany przez Ciebie oparty na tablicach i kolejny oparty na całkach. Oba popularne i oba stare, ale nadal wykorzystywane smile.gif

Tu masz fajny dokumencik: Matematyczna Ruletka” – Czyli jak się robi liczby (pseudo)losowe.

Bardzo polecam ten tekst: Generatory liczb losowych: algorytmy, testowanie, zastosowania

P.S.
Jak mi za miesiąc już dadzą mgr. matematyki to będę mogł powiedzieć, że uczyli i nauczyli tongue.gif
A jak nie dadzą to uczyli i nie nauczyli laugh.gif
no-name
Dzięki. Bardzo fajne teksty. Chyba sam będę musiał potestować tego rand()-a. Jeśli odchylenia będą systematyczne to pół biedy- da się je kontrolować... A tak na marginesie... Nie wiesz czasem jakich algorytmów używa SPSS i czy są one lepsze niż te standardowe z C?

Ps: Niestety, Java zawsze mnie jakoś odpychała. http://www.honeylocust.com/RngPack/doc/edu...ack/Ranlux.html
mike
Niestety nie mam pojącia :/
Nigdy nie interesowałem się ta tematyką jakoś dokladniej, tylko trochę.

Ale tak poza tym: po co Ci tak "dokładne", liczby losowe?

Może wystarczy mt_rand()?

P.S.

Tutaj: mt_rand() moją uwagę zwrócił fragment:
Cytat
(...) który generuje liczby losowe czterokrotnie szybciej niż średnio funkcja rand() z glibc

A więc zagadka rozwiązana, rand() wgląda na kopię odpowednika z C a dokładniej GNU libc
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.