Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

частотный (весовой) коэффициент

7.4K
13 апреля 2005 года
Evgenia
5 / / 27.08.2004
Добрый день.

Есть динамический список неких объектов, у каждого из которых определён свой частотный (весовой) коэффициент. Коэффициент описывается, например, шкалой 1,2...n, со смыслом "чем больше номер, тем чаще должен появлятся объект при выборе". Сейчас выбор идёт простым рандомайзером, но нужно как-то задействовать этот коэффициент. Вопрос в том, как это сделать?

Буду очень благодарна за конкретные формулы или ссылки на любые документы, могущие оказаться полезными для решения этой задачи.
4
13 апреля 2005 года
mike
3.7K / / 01.10.2002
В лоб!

В заисимости от веса нужно построить список объектов. Каждый объект встречается в этом списке от 1 до n раз, в зависимости от веса.

Из этого списка по рандому выбирается объект. Чем больше один и тот же объект встречается в списке, тем больше вероятность того что он выберется

Например:

A - 4
B - 3
C - 1
D - 8

тогда список:

AAAABBBCDDDDDDDD
7.4K
13 апреля 2005 года
Evgenia
5 / / 27.08.2004
Цитата:
В заисимости от веса нужно построить список объектов. Каждый объект встречается в этом списке от 1 до n раз, в зависимости от веса.



Способ хороший, но, подозреваю, не самый быстрый. Учитывая, что мои объекты - это узлы xml-дерева, и строить новое дерево с расширенным количеством узлов - это не так быстро, как хотелось бы.

Я всё надеюсь, что есть какая-то формула, чтобы определить нужный объект сразу, не создавая доволнительных списков.

391
13 апреля 2005 года
Archie
562 / / 03.02.2005
Цитата:
Originally posted by Evgenia
Я всё надеюсь, что есть какая-то формула, чтобы определить нужный объект сразу, не создавая доволнительных списков.


Можно разделить диапазон, генерируемый рандомайзером (0..1) на поддиапазоны (в количестве равном кол-ву объектов). Длина каждого поддиапазона пропорциональна частоте вхождения объекта (n),а суммарная длина всех поддиапазонов = 1. Т.о. получим функцию, которая будет принимать случайное значение x(0..1), а возвращять номер поддиапазона, в который этот x попал (т.е. номер объекта).

4
13 апреля 2005 года
mike
3.7K / / 01.10.2002
Цитата:
Originally posted by Archie
Можно разделить диапазон, генерируемый рандомайзером (0..1) на поддиапазоны (в количестве равном кол-ву объектов). Длина каждого поддиапазона пропорциональна частоте вхождения объекта (n),а суммарная длина всех поддиапазонов = 1. Т.о. получим функцию, которая будет принимать случайное значение x(0..1), а возвращять номер поддиапазона, в который этот x попал (т.е. номер объекта).



Что то-же самое что я ответил вторым постом.

4
13 апреля 2005 года
mike
3.7K / / 01.10.2002
Цитата:
Originally posted by Evgenia
Способ хороший, но, подозреваю, не самый быстрый. Учитывая, что мои объекты - это узлы xml-дерева, и строить новое дерево с расширенным количеством узлов - это не так быстро, как хотелось бы.

Я всё надеюсь, что есть какая-то формула, чтобы определить нужный объект сразу, не создавая доволнительных списков.



Радуйтесь что у вас не баннерная сеть, в который тысячи баннером, миллионы просмотров и коэффицинты от 1 до 32 тыс :)

И все должно работать реал-тайм !!! Тут последовательности точно не построишь.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог