Друзья, нужна помощь.
Необходимо написать ГПСЧ на Делфи (Паскале), который бы генерировал числа в соответствии с гаусовым профилем интенсивности лазерного луча.
Грубо говоря, нам необходимо генерировать случайные числа интенсивности излучения, в соответствии с профилем луча.
Буду благодарен за любую помощь, совет, etc. н
P.S. так понимаю, что надо использовать rndm (в Паскале), но отчего-то не нашел этой функции... А в Делфи вообще идей нет...
Здравствуйте, soton, Вы писали:
S>Друзья, нужна помощь. S>Необходимо написать ГПСЧ на Делфи (Паскале), который бы генерировал числа в соответствии с гаусовым профилем интенсивности лазерного луча. S>Грубо говоря, нам необходимо генерировать случайные числа интенсивности излучения, в соответствии с профилем луча. S>Буду благодарен за любую помощь, совет, etc. н
S>P.S. так понимаю, что надо использовать rndm (в Паскале), но отчего-то не нашел этой функции... А в Делфи вообще идей нет...
Здравствуйте, soton, Вы писали:
S>Друзья, нужна помощь. S>Необходимо написать ГПСЧ на Делфи (Паскале), который бы генерировал числа в соответствии с гаусовым профилем интенсивности лазерного луча. S>Грубо говоря, нам необходимо генерировать случайные числа интенсивности излучения, в соответствии с профилем луча. S>Буду благодарен за любую помощь, совет, etc. н
Если не помнишь как называется функция случайных чисел, то это Random.
По поводу генерирования случайных чисел с заданным нестандартным распределением, то алгоритм примерно следующий:
Строишь из профиля (это я так понимаю что-то типа таблицы вероятности) кумулятивную таблицу вероятности значений интенсивности.
что-то вроде этого
y
1,0 | xx
| xxxx
| xxxxxx
0.5 | xxxx
| xxxxx
| xxx
0.0 | x
----------------------------
1mHz 2mHz 3mHz 4mHz
Единицы измерения по оси Х от балды — я в лазерах ноль ))), по оси кумулятивная Y вероятность появления каждой интенсивности.
Процесс генерации: генерируешь случайное число, проецируешь его на ось Y и находишь соответсвующую этому числу интенсивность по оси Х из кумулятивной таблицы (значения можно интерполировать).
Получилось сумбурно конечно. Если лучше объяснишь, получишь более понятный ответ ))
Здравствуйте, soton, Вы писали:
S>Необходимо написать ГПСЧ на Делфи (Паскале), который бы генерировал числа в соответствии с гаусовым профилем интенсивности лазерного луча.
Первый раз слышу про профиль интенсивности лазерного луча, но помимо общеизвестной функции Random в модуле Math есть функция для генерации случайных чисел с гауссовым распределением:
{ RandG produces random numbers with Gaussian distribution about the mean.
Useful for simulating data with sampling errors. }function RandG(Mean, StdDev: Extended): Extended;
---
The optimist proclaims that we live in the best of all possible worlds; and the pessimist fears this is true
Здравствуйте, soton, Вы писали:
S>Здравствуйте, andy1618, Вы писали:
A>>Мда A>>Ключевые слова: random, Преобразование Бокса — Мюллера
S>Благодарю, смотрел до того, как написать сюда, но это мне не помогло... Не знаю (не понимаю) как связать этот метод с гауссовым профилем луча...
Я не специались по лазерным лучам, но, насколько я понял, речь идёт о том, что распределение интенсивности луча соответствует двумерному нормальному распределению:
(картинка отсюда)
Если это так, то дальше всё просто — в Паскале/Дельфи есть генератор ПСЧ с равномерным распределением (random). Генерируем пару таких "случайных" чисел, и с помощью формул из метода Бокса-Мюллера перегоняем их в пару чисел, дающих нам двумерное нормальное распределение (с сигмой =1 и мю = 0). Если нужны другие сигма и мю — в статье про Б-М внизу есть элементарная формула.
W>{ RandG produces random numbers with Gaussian distribution about the mean.
W> Useful for simulating data with sampling errors. }
W>function RandG(Mean, StdDev: Extended): Extended;
W>
Да, функция хороша. Но вот как её правильно прикрутить к двумерному случаю — вопрос интересный.
Здравствуйте, andy1618, Вы писали:
A>Здравствуйте, soton, Вы писали:
S>>Здравствуйте, andy1618, Вы писали:
A>>>Мда A>>>Ключевые слова: random, Преобразование Бокса — Мюллера
S>>Благодарю, смотрел до того, как написать сюда, но это мне не помогло... Не знаю (не понимаю) как связать этот метод с гауссовым профилем луча...
A>Я не специались по лазерным лучам, но, насколько я понял, речь идёт о том, что распределение интенсивности луча соответствует двумерному нормальному распределению: A> A>(картинка отсюда)
A>Если это так, то дальше всё просто — в Паскале/Дельфи есть генератор ПСЧ с равномерным распределением (random). Генерируем пару таких "случайных" чисел, и с помощью формул из метода Бокса-Мюллера перегоняем их в пару чисел, дающих нам двумерное нормальное распределение (с сигмой =1 и мю = 0). Если нужны другие сигма и мю — в статье про Б-М внизу есть элементарная формула.
Попробую дать еще пояснения. Мне необходимо, чтобы подпрограмма или функция давала значение угла, под которым вылетает луч из источника излучения и соответствующая этому углу интенсивность. Для этого необходим ГПСЧ, генерирующий в соответствии с гаусовым профилем интенсивности.
Посмотрел преобразование Бокса-Мюллера и функцию randg в делфи, но ума не приложу как это все реализовать...
Здравствуйте, soton, Вы писали:
S>Попробую дать еще пояснения. Мне необходимо, чтобы подпрограмма или функция давала значение угла, под которым вылетает луч из источника излучения и соответствующая этому углу интенсивность. Для этого необходим ГПСЧ, генерирующий в соответствии с гаусовым профилем интенсивности. S>Посмотрел преобразование Бокса-Мюллера и функцию randg в делфи, но ума не приложу как это все реализовать...
A>>Если это так, то дальше всё просто — в Паскале/Дельфи есть генератор ПСЧ с равномерным распределением (random). Генерируем пару таких "случайных" чисел, и с помощью формул из метода Бокса-Мюллера перегоняем их в пару чисел, дающих нам двумерное нормальное распределение (с сигмой =1 и мю = 0). Если нужны другие сигма и мю — в статье про Б-М внизу есть элементарная формула.
S>Попробую дать еще пояснения. Мне необходимо, чтобы подпрограмма или функция давала значение угла, под которым вылетает луч из источника излучения и соответствующая этому углу интенсивность. Для этого необходим ГПСЧ, генерирующий в соответствии с гаусовым профилем интенсивности. S>Посмотрел преобразование Бокса-Мюллера и функцию randg в делфи, но ума не приложу как это все реализовать...
Гм, вот теперь, после уточнений (про угол и интенсивность), стало действительно непонятно, что именно требуется
Нужен пример. И дельфи/паскаль, похоже, тут ни при чём