Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Выборка с приоритетом [D7, WinXP]


keal ©   (2005-10-10 18:25:00) 

есть рад объектов с приоритетами.

1 - выбирается больше всех
2 - выбирается меньше
3 - еще меньше
...

необходимо выбрать случайно несколько объектов учитывая приоритет. помогите алгоритмом.


keal   (2005-10-10 19:05:00) [1]

Leonid Troyanovsky ©, я понял.

всем спасибо.


keal   (2005-10-10 19:00:00) [2]

число выбираемых объектов фиксированое


keal   (2005-10-10 18:57:00) [3]

Leonid Troyanovsky ©, дело в том, что приоритеты заранеее не известны.


Leonid Troyanovsky   (2005-10-10 18:57:00) [4]


> keal   (10.10.05 18:54) [4]
> а если есть
> a) 1
> b) 1
> c) 10



idx := RandObjIdx([1/12, 2/12]);

--
Regards, LVT.


keal   (2005-10-10 18:54:00) [5]

а если есть
a) 1
b) 1
c) 10

сумма = 12

c - будет выпадать чаще всего, а надо чтоб a и b


Leonid Troyanovsky   (2005-10-10 18:51:00) [6]


> keal   (10.10.05 18:25)  

> необходимо выбрать случайно несколько объектов учитывая
> приоритет. помогите алгоритмом.


Пусть 1 объект выбирается с вероятностью 0.5
2 - 0.3
3 - 0.2 (т.е., для всех объектов сумма = 1)

Тогда функция


function RandObjIdx(const p: array of Double): Longint;
var
 i: Longint;
 px : Double;
begin
 px := Random;
 for i := 0 to High(p) do
   if px < p[i] then
     begin
       Result := i;
       Exit;
     end;
 Result := High(p)+1;
end;


будет возвращать случайный индекс (от 0) объекта для заданной
функции распределения:  idx := RandObjIndex([0.5, 0.5+0.3]

--
Regards, LVT.


MBo   (2005-10-10 18:47:00) [7]

Пусть относительные вероятности 3:2:1
Частичные суммы 3, 5, 6 заносим в массив
генерируем случайное число в диапазоне 0..5, ищем в массиве част. сумм первое значение, большее случайного числа. его индекс - номер объекта


MBo   (2005-10-10 18:46:00) [8]

Пусть относительные вероятности 3:2:1
Частичные суммы 3, 5, 6 заносим в массив
генерируем случайное число в диапазоне 0..5, ищем в массиве част. сумм первое значение, большее случайного числа. его индекс - номер объекта


Наверх

Титульная страница Поиск, карта сайта Написать письмо