У меня есть таблица, скажем 250 URL-адресов:Gaussian случайное распределение в Postgresql
create table url (
id serial,
url varchar(64)
)
Эти URL соответствуют друг к веб-сайту. Каждый из сайтов имеет разную популярность. Предположим, что наиболее популярны id=125
(один из которых по гауссову), id=1
или id=250
являются наименее популярными.
Я хочу заполнить таблицу «журнал», как показано ниже, со значением URL-адреса среди тех, которые указаны в таблице «url», но с учетом того, что различные URL-адреса могут появляться чаще (например, URL-адрес, идентификатор которого 125 будет самым популярным).
create table log (
id serial,
url_id integer
)
Я хочу, чтобы избежать использования random()
, поскольку она является однородной и не очень «реальной».
Как это можно достичь с помощью Postgresql?
Почему вы предполагаете, что популярность или рейтинг имеют распределение Гауссиона? – wildplasser
Вы можете рассчитать любое распределение, используя PDF этого дистрибутива, используя RAND (который производит значения от 0 до 1, справа?). Для гауссового дистрибутива это будет 1/2 (1 + erf (x-mu)/sqrt (2sigma^2)) - см. Http://en.wikipedia.org/wiki/Normal_distribution –
@wildplasser: потому что этот закон кажется довольно хорошо для того, что я пытаюсь моделировать. Я признаю, что это могло быть и другое! – SCO