Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.30;
Скачать: CL | DM;

Вниз

Выборка с приоритетом   Найти похожие ветки 

 
keal   (2005-10-10 18:25) [0]

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

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

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


 
MBo ©   (2005-10-10 18:46) [1]

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


 
MBo ©   (2005-10-10 18:47) [2]

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


 
Leonid Troyanovsky ©   (2005-10-10 18:51) [3]


> 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.


 
keal   (2005-10-10 18:54) [4]

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

сумма = 12

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


 
keal   (2005-10-10 18:57) [5]

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


 
Leonid Troyanovsky ©   (2005-10-10 18:57) [6]


> 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 19:00) [7]

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


 
keal   (2005-10-10 19:05) [8]

Leonid Troyanovsky ©, я понял.

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



Страницы: 1 вся ветка

Текущий архив: 2005.10.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.045 c
1-1128448523
Цукор5
2005-10-04 21:55
2005.10.30
Position:=poMainFormCenter


5-1107459735
Сергей Д.
2005-02-03 22:42
2005.10.30
TPanel с вертикальным текстом


14-1129007555
X9
2005-10-11 09:12
2005.10.30
Хочу помочь любимому сайту!


1-1128414653
JohnKorsh
2005-10-04 12:30
2005.10.30
Прстейший вопрос по TBotton


14-1128532591
Greenz
2005-10-05 21:16
2005.10.30
Коды системных ошибок Windows