|
![]() |
#1 | |
хардвераш
Qualified
Datum učlanjenja: 04.01.2007
Lokacija: Маунтин Вју, САД
Poruke: 117
Hvala: 4
25 "Hvala" u 10 poruka
![]() |
![]() Citat:
Претпоставимо да имаш M уноса у табелу (рецимо M=100.000.000.000) и да ти треба N = 20 случајно (са униформном расподелом) изабраних уноса у табелу. Пошто је М јако велико, не долази у обзир прављење великог низа, већ читамо један по један елемент из табеле, обрадимо га и идемо даље. Алгоритам је следећи:
Кога не мрзи може да докаже да је добијени низ изабран са тачно униформном расподелом (оно на шта се често мисли кад се каже „рандом“) од свих уноса из табеле. Не знам сад колико је ово ефикасан приступ за базе података. Пошто се елементи генеришу секвенцијално, ако база података допушта читање слога са задатим редним бројем, онда може да се проврти петља која изабере 20-так случајних индекса па се онда прочитају редови у табели са тим индексима. Посолити према укусу. ф
__________________
Рад је створио човека. Рад ће га и уништити. |
|
![]() |
![]() |
![]() |
#2 |
član
Certified
Datum učlanjenja: 05.11.2005
Poruke: 82
Hvala: 7
1 "Hvala" u 1 poruci
![]() |
![]() @filmil: nece biti bas milion podataka ali verovatno tu do 10.000. To je neka aplikacijica za internu upotrebu tako da nece biti previse podataka.
@ivanhoe: tako nesto sam i uradio, ucitao ID-jeve, odabrao random xx kom, WHERE IN (...) ORDER BY RAND(). Radi dosta brzo, probao sam jos par kombinacija i ova je do sada najbolja. Ako izbacim ORDER BY RAND() i ako je while in niz nije slozen vec random, mysql mi slozi output po rastucem redosledu pa ORDER BY RAND() mora da bih dobio rezultate u random rasporedu... @salebab: da da koristio sam shuffle ali sam prepravio na array_rand... Verovatno je i brze, i koristi manje memorije, a i samo je jedan red ![]() |
![]() |
![]() |
![]() |
#3 |
Dejan Ranisavljevic
Certified
|
![]() ORDER BY RAND() radi jako sporo, skoro sam imao problema i izgleda da ovo resava random muke:
SELECT * FROM tablename WHERE id >= FLOOR( RAND( ) * ( SELECT MAX( id ) FROM tablename ) ) ORDER BY id ASC LIMIT 10 |
![]() |
![]() |
![]() |
|
|
![]() |
||||
Tema | Početna poruka teme | Forum | Odgovori | Poslednja poruka |
random select na velikoj tabeli | kodi | SQL baze podataka - Sponzor: Baze-Podataka.net | 14 | 09. 04. 2008. 12:46 |
random koji favorizuje | kodi | Programiranje | 16 | 29. 04. 2007. 21:09 |
java.util.Random security | Ivan | Programiranje | 0 | 02. 01. 2007. 18:43 |
Generisanje random UNIQUE kodova | bluesman | Programiranje | 54 | 25. 02. 2006. 14:05 |
Random image - preraditi za flash... | headcutter | (X)HTML, JavaScript, DHTML, XML, CSS | 4 | 02. 09. 2005. 22:14 |