| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Есть |
| Автор: LLLL 4.10.2003, 21:11 |
| Задача: Есть N случайных значений - "точек", а точнее относительных координат точек на оси Х. Необходимо получить N новых координат точек на оси Х по следующему алгоритму: Разыгрываем случайным образом каждую координату - если розыгрыш успешный, текущая координта точки не меняется. Если неудачный к ее значению прибавляется случайное число T>0 в результате точка "прыгает" на T вправо по оси Х. Цикл повторяется для каждой координаты, пока все координаты точек не будут разыграны и для каждой разыгранной координаты розыгрыш будет удачным. Розыгрыш - с вероятность р успех, 1-р неудача. р известно заранее. Исходы независимы. Реализовал алгоритм на встроенном языке MathCAD - но уж больно долго считает, переложил на Си - заметно быстрее, но все равно долго. Посоветуйте, можно ли что-нибудь сделать для увеличения скорости работы данной программы? В чем конкретно проблема: фактически после каждой i-той неудачи мне приходится методом перебора перебирать N-i оставшихся координат с тем чтобы "вклинить" i-тую точку. Нельзя ли что-либо сделать чтобы избежать данной операции? |
| Автор: p0s0l 5.10.2003, 19:27 |
| Что-то не очень понятно. Лучше будет, если выложишь C-шный исходник... |
| Автор: neutrino 6.10.2003, 23:29 |
| Модератору: перенесите пожалуйста в "Алгоритмы" Время, затраченное на выполнение алгоритма, зависит от этой вероятности p. Если она у тебя маленькая, то и алгоритм будет идти долго. А вообще приведи свой код. |