Očigledno se nisi potrudio da pročitaš šta su ti ljudi napisali nego teraš svoje...
Da probam da približim ovo što Ivanhoe kaže (filmil je i za mene previše stručan
), prenoseći ideju u svet baza.
Dakle, na raspolaganju ti je npr. najobičnija unfiormna random funkcija rand(n), koja vraća ceo broj između 0 i n.
Imaš tabelu T sa nekim ID-jem i nekim slogovima. Svaki slog ima polje težina, koja je neki integer. Hoćeš da polje sa 5 puta većom težinom od drugog bude 5 puta verovatnije izvučeno iz random bubnja. Uradiš sledeće:
n := select sum(težina) from T
x := rand(n)
Upit koji ti vraća traženi slog je:
Kôd:
select top 1 t1.id, sum(t2.težina) from tabela t1
inner join tabela t2 on t1.težina > t2.težina
group by t1.id
having sum(t2.težina) <= x
order by sum(t2.težina) desc