Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Generator liczb losowych, ... rozłożonych równomiernie
bobens_83
post
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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
bobens_83
post
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?

Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 3.10.2025 - 11:16