Случайные числа в программировании

Автор работы: Пользователь скрыл имя, 27 Апреля 2012 в 11:56, курсовая работа

Описание

Целью работы является изучение и описание назначения, и примеры использования случайных чисел в программировании.
Курсовая работа состоит из двух основных частей: теоретической и практической. В теоретической части будет рассмотрено понятие «случайного числа» и «псевдослучайного числа», понятие «генератора случайных чисел», применение случайных чисел, методы генерирования случайных и псевдослучайные чисел. В практической части – применение случайных чисел для решения задач на языке Pascal,применение метода Монте-Карло для решения задач.

Содержание

ВВЕДЕНИЕ…………………………………………………………………...……….3
ГЛАВА 1. СЛУЧАЙНЫЕ И ПСЕВДОСЛУЧАЙНЫЕ ЧИСЛА.
ГЕНЕРАТОРЫ СЛУЧАЙНЫХ ЧИСЕЛ……………………...……….. 4
1.1.Определение случайного и псевдослучайного числа.
Формы случайных чисел………………………………………........…....4
1.2.Генераторы случайных чисел (ГСЧ) и их характеристика…...…..6
1.3.Аппаратные ГСЧ……………………………………………...……....7
1.4. Табличные ГСЧ…………………………….………………..…...…..9
1.5.Программные ГСЧ…………………………………………...……...10
1.6.Области применения случайных чисел…………………..………..15
ГЛАВА 2. СЛУЧАЙНЫЕ ЧИСЛА В PASCAL…………………………….……...16
2.1 Генератор случайных чисел в Pascal ABC……………….…….….16
2.2. Рассмотрение примеров………………………………………….....19
ЗАКЛЮЧЕНИЕ…………………………………………………………………….....24
СПИСОК ИСПОЛЬЗОВАНОЙ ЛИТЕРАТУРЫ………………………………......25

Работа состоит из  1 файл

курсовая_м.docx

— 83.89 Кб (Скачать документ)

что можно  заменить на 

     Выбирая за центр окружности и квадрата начало системы координат, тогда выбрать точку - это значит задать ее координаты: для числа X и Y. Точка принадлежит квадрату, если -1≤X≤1 и -1≤Y≤1. Если X*X+Y*Y≤1, то точка попадает в круг F, иначе она лежит вне круга. Это и есть математическое соотношение, позволяющее для каждой точки определять, лежит ли она в F., Выбранная математическая модель для решения задачи на 
нахождение площади использует случайные числа (такие модели называют вероятностными). В связи с чем при запуске программы для одного и того же количества случайных чисел результаты будут разными. Результатам вычислений можно доверять, так как в теории вероятностей имеется строгое математическое доказательство метода Монте-Карло.

     Программа на языке Паскаль.        По рассмотренной математической модели программа на языке Паскаль выглядит так:

Program MonteKarlo; Uses crt; 
Var x,y:real; 
n,kr,kw:integer;

begin 
Clrscr; Writeln ('Вычисление числа ПИ методом МОНТЕ-КАРЛО.'); 
Writeln; 
Write ('Введите количество случайных чисел. n='); 
repeat 
x:=random; 
until keypressed; 
Read (n); 
GotoXY (20,8);Writeln ('ЖДИТЕ...'); 
kr:=0; kw:=0; 
repeat 
x:=(0.5-random)*2; y:=(0.5-random)*2; 
kw:=kw+1; 
if x*x+y*y<=1 then kr:=kr+1; 
until kw>n;

Clrscr; 
GotoXY (20,8); Writeln ('n=',n); 
GotoXY(20,10); Writeln ('π=',kr/kw*4:2:6); 
end.

Назначение отдельных частей программы.             а)Program MonteKarlo; 
Var x,y:real; 
n,kr,kw:integer; 
x,y - координаты случайной точки, 
n- количество случайных точек, попавших в квадрат, 
kr - количество случайных точек попавших в круг kw - счетчик точек, по выходе из цикла равен количествуслучайных точек, попавших в квадрат.

б)Clrscr; Writeln ('Вычисление ПИ методом МОНТЕ_КАРЛО.'); 
Writeln; 
Write ('Введите количество случайных чисел. n=');  Печать заголовка и подсказки на ввод количества случайных  точек.              в)repeat 
x:=random; 
until keypressed; 
Read (n); 
GotoXY (20,8); Writeln ('ЖДИТЕ...'); 
Цикл, предназначенный усилить непредсказуемость последовательности случайных чисел. Чтение с клавиатуры количества случайных точек и вывод в позиции (20,8) указания ждать конца выполнения программы.

г) kr:=0;  kw:=0; 
Установление счетчика точек, попавших в квадрат и круг, в нулевое состояние. 
д) repeat 
x:=(0.5-random)*2; y:=(0.5-random)*2; 
kw:=kw+1; 
if x*x+y*y<=1 then kr:=kr+1; 
until kw>n; 
Основной расчетный цикл в котором команда: 
x:=(0.5-random)*2; y:=(0.5-random)*2 формирует координаты случайных точек, попавших в квадрат с координатами  -1≤X≤1 и -1≤Y≤1, 
kw:=kw+1 подсчитывает количество сформированных случайных точек. 
if x*x+y*y<=1 then kr:=kr+1 подсчитывает количество случайных точек попавших внутрь круга. 
until kw>n выход из цикла по достижении количества случайных точек превосходящих заданное количество n.           е) Clrscr; 
GotoXY (20,8); Writeln ('n=',n); 
GotoXY(20,10); Writeln ('ПИ=',kr/kw*4:2:6); 
Стереть с экрана и вывести на печать в позиции (20,8) количество случайных точек и результат вычислений в позиции (20,10), причем для печати целой части числа отвести не менее 2-х позиций, для печати дробной части числа отвести 6 позиций.

Таблица 2.1- Анализ полученных результатов

n результат
10 2.909091
50 3.058824
50 3.372549
50 2.901961
200 3.323383
200 3.203980
200 3.104478
1000 3.148851
1000 3.104895
1000 3.144855

 
 
 
 
 
 
 
 
 

     Таким образом, время работы программы  и результат зависят от количества выбранных точек. Чем больше точек, тем больше время работы программы и точнее результат. 

 

ЗАКЛЮЧЕНИЕ

     В программировании достаточно часто  находят применение последовательности чисел, выбранных случайным образом  из некоторого множества. Они используются при отладке, тестировании программ, моделировании случайных процессов, а также при определении эффективности того или иного алгоритма. Случайные числа можно получать (генерировать) разными способами. Для этого используются аппаратные, табличные или программные генераторы. Программные генераторы не дают «настоящих» случайных чисел, полученные таким образом числа являются псевдослучайными. Такие генераторы в качестве стандартных функций используются во всех языках программирования. В системе программирования Pascal тоже есть такая функция –Random. Входе работы мною были сделаны следующие выводы:

  • Основные требования к последовательности случайных чисел - это случайность и непредсказуемость.
  • Случайные числа можно получить лишь аппаратными генераторами, а случайные числа полученные другим генераторами являются псевдослучайными.
  • Без случайных чисел не может существовать моделирование и программирование.
  • В Pascal эффективно использовать  случайные числа при решении задач с массивами.

 

 

    СПИСОК  ИСПОЛЬЗОВАНОЙ ЛИТЕРАТУРЫ:

  1. Жельников, В. Псевдослучайные последовательности чисел. Кpиптогpафия от папируса до компьютера [Электронный ресурс]. / В.Жельнивов. – Москва: ABF, 1996. – Режим доступа: http://bookz.ru/authors/jel_nikov-vladimip/zhelnkvld01/1-zhelnkvld01.html. –Дата доступа: 29.04.2011.
  2. Иванова, В.М. Случайные числа и их применение/ В.М. Иванова. – Москва: Финансы и статистика,1984.– 111с.
  3. Кнут, Д.Э. Искусство программирования / Д.Э. Кнут.– 3-е изд. – Москва: Вильямс, 2000.  – 832 с.
  4. Круз, Р.Л. Структуры данных и проектирование программ / Р.Л.Круз–Москва: БИНОМ. Лаборатория знаний, 2008.–765с. – С. 663–670.
  5. Культин, Н.Б. Программирование в Turbo Pascal 7.0 и Delphi/ Н.Б. Культин.   – Санкт-Петербург: BHV-Санкт-Петербург, 1997. –234с.
  6. Лабораторная работа/Случайные числа /Генератор случайных чисел. – Режим доступа:  http://allbest.ru/.–Дата доступа: 05.04.2011.
  7. Лифшиц Ю./Псевдослучайные генераторы/ Лифшиц Ю./ Лекция–25 ноября 2005.
  8. Павловский, А.И.Случайные числа и их использование в учебном процессе по информатике. / А.И.  Павловский, В.В. Пенкрат / Информатизация образования. –2009. –28c.
  9. Планета Информатики [Электронный ресурс]./ Случайные или псевдослучайные числа. – Режим доступа: http://inf1.info/pseudorandom.– Дата доступа: 05.04.2011.
  10. Рапаков, Г.Г.Программирование на языке  Pascal./Г.Г. Рапаков, Ржеуцкая С .Ю./ – Санкт-Петербург: BHV-Санкт-Петербург,2004–480с.
  11. Рогачева, Н.А. Информатика. Язык программирования Паскаль: Пособие для студентов дневной формы обучения технических специальностей / Н.А. Рогачёв, Т.Н. Литвинович, М.В. Борисенко.– Гомель : БелГУТ, 2004. –Ч.2. –38с.
  12. Форонов, В.В. Turbo Pascal. –Санкт-Петербург: BHV-Санкт-Петербург, 2004.–1056с.
  13. Язык Pascal. Программирование для начинающих: Генератор псевдослучайных чисел [Электронный ресурс].– Режим доступа: http://pas1.ru/random.– Дата доступа: 05.04.2011.
  14. Пояснительная записка к курсовому проекту. Генерирование псевдослучайных чисел. Метод середины квадрата. – БТИ АлтГТУ. –2009.

Информация о работе Случайные числа в программировании