Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.05.2011, 13:50
Ксюха Ксюха вне форума
Прохожий
 
Регистрация: 22.05.2011
Сообщения: 28
Репутация: 10
По умолчанию моделирование в Delрhi

Добрый день.помогите пожалуйста с задачей.уже несколько пар мучаюсь не могу решить.знаю как смоделировать а описать в программе не получается.
задача: Построить модель определения вероятности поражения цели одиночным ракетным ударом.оценить точность и количество реализации модели при определении вероятности исходной.
Моделирование
1. Имитируем удар, то есть мысленно нанесем удар по объекту путем определения координат взрыва. В силу идентичности закона рассеивания и его характеристик с законами распределения случайных чисел такими координатами могут быть x1 и y1 , взятые из последовательностей случайных чисел.
2. Вычислим расстояние r1 от места взрыва ракеты до цели: r1=корень из (x1 в квадрате + у1 в квадрате)
3. Оценим результаты имитации удара, то есть установим факт поражения или непоражения объекта:
если r1<=R , то объект поражен;
если r1>R, то объект непоражен.
4. Если объект поражен, запомним этот факт M увеличением на единицу, то есть M=M+1 (в начале M=0 ).
5. Для нахождения вероятности поражения объекта повторим имитацию нанесения удара N раз.
6. Оценим вероятность через частость поражения объекта:P(r<=R)=M/N
Ответить с цитированием
  #2  
Старый 22.05.2011, 15:25
Аватар для AND_REY
AND_REY AND_REY вне форума
Активный
 
Регистрация: 31.03.2009
Адрес: Украина, г.Днепропетровск
Сообщения: 324
Версия Delphi: Delphi7
Репутация: 3877
По умолчанию

Прикольная задачка
Код:
Var
 M: Integer = 0;
 N: Integer = 0;

procedure TForm1.Button1Click(Sender: TObject);
const
 x = 50;  // координаты цели
 y = 50;
 r = 30;  // растояние
var
 x1, y1: Integer;
 r1: Real;
begin
 Randomize;
 Form1.Canvas.Brush.Color:= clBtnFace;
 Form1.Canvas.Rectangle(0,0,105,105);
 Form1.Canvas.Brush.Color:= clBlue;
 Form1.Canvas.Ellipse(x-r,y-r,x+r,y+r);
 x1:= Random(100);
 y1:= Random(100);
 Form1.Canvas.Brush.Color:= clRed;
 Form1.Canvas.Ellipse(x1-3,y1-3,x1+3,y1+3);
 r1:= Sqrt(Sqr(x1 - x) + Sqr(y1 - x));
 if r1 <= r Then
  begin
   ShowMessage('Попали!');
   Inc(M);
  end
   Else ShowMessage('Промазали!');
 Inc(N);
 Label1.Caption:= 'Вероятность = '+FloatToStr(M/N);
end;
__________________
If end Then begin;
Ответить с цитированием
  #3  
Старый 23.05.2011, 17:05
Ксюха Ксюха вне форума
Прохожий
 
Регистрация: 22.05.2011
Сообщения: 28
Репутация: 10
По умолчанию

спасибо за помощь!)
подскажите как можно изменить программу так чтобы она зациклилась.несколько раз попадание или нет а потом уже высчитывает вероятность
Ответить с цитированием
  #4  
Старый 23.05.2011, 18:11
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Код:
repeat

until ...
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #5  
Старый 23.05.2011, 18:42
Ксюха Ксюха вне форума
Прохожий
 
Регистрация: 22.05.2011
Сообщения: 28
Репутация: 10
По умолчанию

а куда????ну затупок я в программировании
Ответить с цитированием
  #6  
Старый 23.05.2011, 19:01
Аватар для AND_REY
AND_REY AND_REY вне форума
Активный
 
Регистрация: 31.03.2009
Адрес: Украина, г.Днепропетровск
Сообщения: 324
Версия Delphi: Delphi7
Репутация: 3877
По умолчанию

Так вроде бы работает, тестируйте:
Код:
Var
 M: Integer = 0;
 N: Integer = 0;

procedure TForm1.Button1Click(Sender: TObject);
const
 x = 50;  // координаты цели
 y = 50;
 r = 30;  // растояние
var
 x1, y1, i: Integer;
 r1: Real;
begin
 For i:= 1 To 1000000000 Do // Несколько раз выстрелим
  begin
   Randomize;
   Form1.Canvas.Brush.Color:= clBtnFace;
   Form1.Canvas.Rectangle(0,0,105,105);
   Form1.Canvas.Brush.Color:= clBlue;
   Form1.Canvas.Ellipse(x-r,y-r,x+r,y+r);
   x1:= Random(100);
   y1:= Random(100);
   Form1.Canvas.Brush.Color:= clRed;
   Form1.Canvas.Ellipse(x1-3,y1-3,x1+3,y1+3);
   r1:= Sqrt(Sqr(x1 - x) + Sqr(y1 - x));
   if r1 <= r Then
    begin
     Label1.Caption:= 'Попали!';
     Inc(M);
    end
     Else Label1.Caption:= 'Промазали!';
   Inc(N);
  end;
 Label1.Caption:= 'Вероятность = '+FloatToStr(M/N);
end;
__________________
If end Then begin;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:36.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter