Mam tabeli z powiedzmy 250 URL:losowy rozkład Gaussa w PostgreSQL
create table url (
id serial,
url varchar(64)
)
Adresy te odpowiadają każdy na stronie internetowej. Każda z witryn ma inną popularność. Załóżmy, że najbardziej popularna jest wersja id=125
(jedna z nich jest skoncentrowana na gausku), najpopularniejsze to id=1
lub id=250
.
Chcę wypełnić tabelę "logów", taką jak poniższa, z wartością url spośród tych podanych w tabeli "URL", ale biorąc pod uwagę, że różne adresy URL mogą pojawiać się częściej (na przykład URL, którego identyfikator 125 będzie najbardziej popularne).
create table log (
id serial,
url_id integer
)
Chcę uniknąć używania random()
, ponieważ jest jednolity i niezbyt "prawdziwy".
Jak można to osiągnąć dzięki Postgresql?
Dlaczego zakładasz, że popularność lub ranking ma rozkład Gaussiona? – wildplasser
Możesz obliczyć jakąkolwiek dystrybucję za pomocą pliku PDF tej dystrybucji za pomocą RAND (która wytwarza wartości między 0 a 1, prawda?). Dla dystrybucji gaussowskiej będzie to 1/2 (1 + erf (x-mu)/sqrt (2sigma^2)) - patrz http://en.wikipedia.org/wiki/Normal_distribution –
@wildplasser: ponieważ to prawo wydaje się całkiem dobre dla tego, co próbuję wymodelować. Przyznaję, że mógł to być jakikolwiek inny! – SCO