Алго подскажите - Форум успешных вебмастеров - GoFuckBiz.com
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB88.4375
BTC/USD67751.3897
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 27.08.2010, 22:36   #1
TerVer
Senior Member
 
Аватар для TerVer
 
Регистрация: 14.09.2007
Сообщений: 740
Бабло: $73721
По умолчанию Алго подскажите

Хай!
Чет за три дня не могу придумать.
Имеется к примеру 2000 страниц и определенное кол-во ссылок (от 5 до 5000).
Так же для каждой ссылки есть статистика, которая выражается числом от 10 до 20000. (ну типа $link[$url]=$numder)
В каждую страничку хочу вставить до 5 ссылок.
Как бы ссылки распределить по сраничкам в соответствии со статистикой покрасивее?!
TerVer вне форума  
Старый 27.08.2010, 22:50   #2
seeker
Ебланнед
 
Регистрация: 07.04.2010
Сообщений: 1,575
Бабло: $0
По умолчанию

при таком кол-ве инфы "покрасивее" значит рандом
обычно он пиздато справляется
не сказано: для кого покрасивее, для чего покрасивее, чё за статистика и т.д...
__________________
НЕАДЕКВАТ
seeker вне форума  
Старый 27.08.2010, 22:54   #3
TerVer
Senior Member
 
Аватар для TerVer
 
Регистрация: 14.09.2007
Сообщений: 740
Бабло: $73721
ТС -->
автор темы ТС По умолчанию

если $link[$url1]>$link[$url2] , то $url1 должен чаще встречаться на страничках


зы: едитед
TerVer вне форума  
Старый 27.08.2010, 23:06   #4
imgreen
Senior Member
 
Аватар для imgreen
 
Регистрация: 15.11.2008
Сообщений: 13,199
Бабло: $247847021
По умолчанию

вот тебе функция рандома с учетом весовых коэфициэнтов ($link[$url] они и есть у тебя судя по всему)
PHP код:
 function weight_rand($arr$weights)
{
    if(!
is_array($arr) || count($arr) < 1) return false;
    
$sum 0$result null;
    do{
        foreach(
$arr as $i => $data) {
           
$sum += $weights[$i];
           if (
rand(0$sum) < $weights[$i]) {
              
$result $data;
           }
        }
    } while(
is_null($result));
    return 
$result;

с тебя пиво
imgreen вне форума  
Старый 27.08.2010, 23:44   #5
TerVer
Senior Member
 
Аватар для TerVer
 
Регистрация: 14.09.2007
Сообщений: 740
Бабло: $73721
ТС -->
автор темы ТС По умолчанию

да блин, - некрасиво так!
TerVer вне форума  
Старый 27.08.2010, 23:56   #6
imgreen
Senior Member
 
Аватар для imgreen
 
Регистрация: 15.11.2008
Сообщений: 13,199
Бабло: $247847021
По умолчанию

что некрасиво?
imgreen вне форума  
Старый 28.08.2010, 03:58   #7
dveredel
Читатель
 
Аватар для dveredel
 
Регистрация: 23.11.2007
Сообщений: 420
Бабло: $48745
По умолчанию

Цитата:
Сообщение от imgreen Посмотреть сообщение
с тебя пиво
http://www.gofuckbiz.com/showpost.ph...1&postcount=17

Делись пивом
dveredel вне форума  
Старый 28.08.2010, 04:44   #8
kanscx
Senior Member
 
Аватар для kanscx
 
Регистрация: 03.04.2007
Адрес: www.ua
Сообщений: 3,202
Бабло: $373635
По умолчанию

Давай завтра стукни обсудим а то я щас уже в хлам )
kanscx вне форума  
Старый 28.08.2010, 11:37   #9
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,356
Бабло: $470735
По умолчанию

Цитата:
Сообщение от TerVer Посмотреть сообщение
В каждую страничку хочу вставить до 5 ссылок.
Как бы ссылки распределить по сраничкам в соответствии со статистикой покрасивее?!
ты привел недостаточно данных.

Какое распределение будет у "хочу вставить до 5 ссылок", равномерно aka random? заданное как в случае весов url? пуассоновское? или по гаусу?
вот простейшее алго:
PHP код:
for (page=1 to 2000)  { // цикл по страницам
  
url_amount random(1,5// ну или какое тут распределение нужно
  
for (page_url=1 to url_amount) {
    
page_url weight_random ($link[$url]) // выбор урл, согласно заданным весам распределений вероятностей, см ф-ю выше
  
}

урлы с большим весом будут вставлять чаще на различные страницы
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 28.08.2010, 14:57   #10
alexpotemkin
Senior Member
 
Регистрация: 27.10.2007
Сообщений: 134
Бабло: $37333
По умолчанию

Помнится похожая задачка была когда писали одних ботов, там нужно было равномерно их распределять по задачам. В предыдущем сообщении верно указано не хватает условия как их распределять. У нас была задача размазать равномерно, т.е. всегда добавлялось туда где было меньше всего, для выравнивания общей статистики, был массив задач, в этом массиве хранилось количество, после каждого изменение пересчитывалось среднее значение, по нему всегда и добавлялось, т.е. в рассмотрение брались те элементы массива у которых количество ниже среднего или равно ему, среднее всегда стремилось к максимальному значению соответственно, в итоге всё равномерно раскидывалось по задачам.
alexpotemkin вне форума