Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Rzetelność metody rand()
no-name
post 11.08.2006, 21:49:49
Post #1





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 26.04.2005

Ostrzeżenie: (0%)
-----


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...)

Ten post edytował no-name 11.08.2006, 22:24:12
Go to the top of the page
+Quote Post
mike
post 11.08.2006, 21:59:01
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
dr_bonzo
post 11.08.2006, 22:02:17
Post #3





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


rand()" title="Zobacz w manualu php" target="_manual?

(tongue.gif jak koduje to czesto myle nazwy tych funkcji smile.gif)


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Cysiaczek
post 11.08.2006, 22:12:21
Post #4





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




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.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
suck
post 11.08.2006, 22:26:15
Post #5





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 7.03.2006

Ostrzeżenie: (0%)
-----


temat losowosci jest fajnie omowiony w ksiazce "Cisza w sieci" polecam
Go to the top of the page
+Quote Post
TomASS
post 11.08.2006, 22:28:43
Post #6





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

Ostrzeżenie: (0%)
-----


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 )


--------------------
Go to the top of the page
+Quote Post
no-name
post 11.08.2006, 22:37:20
Post #7





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 26.04.2005

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
mike
post 11.08.2006, 22:58:20
Post #8





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
no-name
post 11.08.2006, 23:27:30
Post #9





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 26.04.2005

Ostrzeżenie: (0%)
-----


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

Ten post edytował no-name 11.08.2006, 23:36:18
Go to the top of the page
+Quote Post
mike
post 11.08.2006, 23:43:06
Post #10





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 09:50