VAR .......; begin RANDOMIZE; .... 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

VAR .......; begin RANDOMIZE; ....

Поиск

у=sin(x); y=1;

x=0; x=3.14...


Неизвестная пока нам площадь этой фигуры составляет часть прямоуголь- ника площадью S = 1 x 3.14 = 3.14 = PI.

Алгоритм решения задачи.

1) Генерируем случайное число х1в диапазоне от 0 до РI, а также случайное число у1в диапазоне от 0 до 1. Получаем случайную точку внутри прямоуголь- ника с координатами ( х1 , у1 ).Эта точка может попасть в исследуемую фигуру, а может и не попасть.

2)Проверка принадлежности точки ( х1 , у1 )к исследуемой фигуре. Если попадания нет, т.е. у1 > sin ( х1 ), то переходим к п.1 и снова генерируем случай- ную точку с координатами ( х2 , у2 ).

Если попадание есть, т.е. у1 < sin ( х1 ), то необходимо зафиксировать, за- помнить это попадание и снова перейти к п.1. В итоге мы должны считать число попаданий.

Примечание: попадание точки точно на границу фигуры у1 = sin (х1)можно отнести как к одному, так и к другому исходу - это воля экспериментатора и ав- тора программы.

3) Пункт 1 следует повторить достаточно большое число раз, от этого, в конечном итоге, зависит точность вычислений. Для данной задачи число повто- ров N=1000 - 3000.

4) После проведения Nповторов имеем несложную пропорцию: общее число опытов соответствует всей площади прямоугольника, равной PI, а число попаданий Р будет соответствовать неизвестной площади S исследуемой фи- гуры. Отсюда:

S = (P * PI) / N .

Укрупненная блок-схема алгоритма приведена на рис. 2.

 

3. Генерация случайных чисел на Паскале

 

1) Генерация случайных вещественных чисел ( тип REAL ) в диапазоне от 0 до 1 осуществляется с помощью функции RANDPOM:

х := RANDOM ; (1)

Если необходимо генерировать случайные числа в другом диапазоне, то необходимо преобразовать выражение (1) с помощью операций смещения и мас- штабирования. Например, для того, чтобы получить случайное число в диапа- зоне от 10 до 12, необходимо использовать выражение:

х := 10 + 2 * RANDOM ; (2)

2) Для генерации целых ( тип INTEGER ) случайных чисел в диапазоне от 0 до N используется функция с аргументом :

х := RANDOM( N );

3) Для смены базы генерации случайных чисел ( чтобы при каждом новом прогоне программы числа были другие ) используется процедура RANDOMIZE. Обращение к этой процедуре идет до обращения к функциям RANDOM,напри- мер:



Поделиться:


Последнее изменение этой страницы: 2024-06-27; просмотров: 44; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.006 с.)