![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 112 Pomógł: 0 Dołączył: 7.11.2005 Skąd: z Czelsy Ostrzeżenie: (0%) ![]() ![]() |
Witam PHP'owcy (IMG:style_emoticons/default/smile.gif)
Mam napisac w PHP generator liczb losowych. Ma on losowac liczby z danego zakresu. Kazda kolejna wylosowana liczba ma zapisywac sie do bazy danych. Moje pytanie dotyczy tego w jaki sposob w moim generatorze moglbym zaimplementowac kontrole rownomiernosci wynikow? Chodzi mi o to, zeby zapewnic, ze dana nowo wylosowana liczba (powiedzmy liczba x), wraz z liczbami juz wczesniej wylosowanymi (powiedzmy liczby juz wylosowane tworza zbior Y) bedzie tworzyc zbior rozlozony rownomiernie w zakresie z ktorego losujemy liczby? Przykladowo, jesli moj zbior z ktorego losuje liczby to 1-100, mam niedopuscic do sytuacji, ze kolejno przydzielane liczby (czyli moj zbior Y) beda np. 1, 2 i 3 no bo juz na pierwszy rzut oka widac, ze moj 3 elementowy zbior Y nie rozklada sie rownomiernie w przedziale 1-100. Co innego jakby byly to liczby 1, 100, 50 - wyglada to juz bardziej sensownie i ... 'rownomiernie'. Bede wdzieczny za wszelkie wskazowki. Z gory dziekuje i pozdrawiam. P. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 112 Pomógł: 0 Dołączył: 7.11.2005 Skąd: z Czelsy Ostrzeżenie: (0%) ![]() ![]() |
Dziekuje za posty,
niestety nie wiem czym jest kongruencja (tzn juz wiem bo z ciekawosci zajrzalem na wiki (IMG:style_emoticons/default/smile.gif) ), a z ta maematyka w szkole to bywalo roznie (IMG:style_emoticons/default/wstydnis.gif) Irackim szpiegiem tez nie jestem (IMG:style_emoticons/default/guitar.gif) Wiec sprostowalem nieco polecenie ktore mam wykonac. Poczatkowo czesciowo blednie je zinterpretowalem, chociaz zagadnienie "rownomiernosci" tak czy siak mnie interesowalo wiec MySQL dziekuje za odpowiedzi. A wiec po sprostowaniu polecenie brzmi nastepujaco: Mam napisac algorytm losujacy ze liczby ze zbioru 1 000 000 - 2 000 000. Bez powtorzen. Wylosowane juz liczby zapisywac sie maja do bazy MySQL. Funkcja losujaca ma przyjmowac parametry: wartosc dolna predzialu, wartosc gorna przedzialu, tablica z juz wylosowanymi liczbami. Mam pamietac, ze rand_max jest "o wiele za maly" na potrzeby tego zadania. Algorytm ma dzialac ... im szybciej tym lepiej Znalazlem kilka algorytmow losowania bez powtorzen, np ten. Jednak wiekszosc z nich pracuje na malych zbiorach, a moj ma 1 000 000 elementow. I tu mam dylemat, wyczytalem ze w php wielkosc tablicy jest determinowana ustawieniami na serwerze. Ale tak czy siak ladowanie miliona rekordow z MySQLa to array'a to chyba nie przejdzie. I wogole to mam troche watpliwosci co do pracy z taka duza iloscia danych. Macie jakis pomysl jak poradzic sobie z losowaniem z takiego duzego zbioru? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 11:16 |