Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 29.04.2013
Сообщений: 18
1

Определить вероятности исходов боя бомбардировщика с истребителями

29.04.2013, 21:55. Просмотров 2711. Ответов 5
Метки нет (Все метки)

Необходимо написать программу на С++.Происходит воздушный бой между бомбардмровщиком и двумя атакающими его истребителями. Стрельбу начинает бомбардировщик; он дает по каждому истребителю один выстрел и сбивает его с вероятностью р1. Если данный истребитель не сбит, то он независимо от судьбы другого стреляет по бомбардировщику и сбивает его с вероятностью р2. Определить вероятности следущих исходов боя:
А-сбит бомбардировщик
В- сбиты оба истребителя
С -сбит хотя бы один истребитель
D-сбит хотя бы один самолет
E-сбит ровно один истребитель
F-сбит ровно один самолет
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.04.2013, 21:55
Ответы с готовыми решениями:

Найти вероятности, составить множества элементарных исходов
1. Полная колода карт (52 листа) разбивается на 2 равные стопки по 26 карт. Найти вероятность того,...

Высшая математика. Подсчет вероятности события по стаистике предыдущих исходов
Вобщем есть к примеру монетка котороя подкидывалась 12 раз 1 герб 2 герб 3 герб 4 герб 5 герб...

Докажите, что энтропия такого опыта максимальна, если вероятности исходов будут обе равны 0,5
4 Опыт имеет два исхода. Докажите, что энтропия такого опыта максимальна, если вероятности исходов...

Определить вероятность поражения бомбардировщика
Число атак истребителя, которым может подвергнуться бомбардировщик на территории противника, есть...

5
Заблокирован
02.05.2013, 04:14 2
Раунд обмена ударами: 2 подряд выстрела Б, 1 выстрел И1, 1 выстрел И2
N – номер раунда

N = 1
А - сбит бомбардировщик
он оставил в живых хотя бы один И: (1 – p1^2),
и
мог быть сбит при выстреле И1: p2
или
сбит при выстреле И2: q2*p2
P(A) = (1 – p1^2)* (p2 + q2*p2) = (1 – p1^2)*p2*(1+q2) = (1 – p1^2)*p2*(2-p2)

В - сбиты оба истребителя
P(B) = p1^2

С - сбит хотя бы один истребитель
дополнительная вероятность к событию «не было сбито ни одного истребителя»
P(C) = 1 – q1^2

D - сбит хотя бы один самолет
дополнительная вероятность к событию «не было сбито ни одного самолета»
P(D) = 1 – (q1^2*q2^2)

E - сбит ровно один истребитель
первый выстрел Б удачный р1
или
второй выстрел удачный после первого неудачного q1p1
P(E) = p1 + p1q1 = p1*(1+q1)

F - сбит ровно один самолет
событие А
или
событие Е при условии что И1 и И2 не попали
P(F) = P(A) + P(E)*q2^2


Вероятность конца боя:
END: P(A) + P(B) – show over
Продолжение:
CONTINUE: 1 – (P(A) + P(B)) = PR – show goes on

Вероятности в каждом последующем раунде аналогичны, но умножаются на PR после каждого раунда. Т.е. для раунда N = n
PAn = PR^(n-1) * PA и т.д.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
using namespace std;
 
void roundScore(double p1, double p2, double PR)
{   double PA, PB, PC, PD, PE, PF, q1, q2;
    q1 = 1. - p1;
    q2 = 1. - p2;
    
    PA = PR*(1. - p1*p1)*p2*(2. - p2);
    PB = PR*p1*p1;
    PC = PR*(1. - q1*q1);
    PD = PR*(1. - q1*q1*q2*q2);
    PE = PR*p1*(1.0 + q1);
    PF = PA + PE;
 
    cout<<"\tPA = "<<PA<<"\n\tPB = "<<PB<<"\n\tPC = "<<PC<<"\n\tPD = "<<PD<<"\n\tPE = "<<PE<<"\n\tPF = "<<PF<<"\n";
}
 
int main()
{   double p1,p2,PR;
    int round = 1;
    cout<<"p1 = ";
    cin>>p1;
    cout<<"p2 = ";
    cin>>p2;
 
    cout<<"Round "<<round<<"\n";
    roundScore(p1,p2,1.);
 
    PR = 1. - (1. - p1*p1)*p2*(2. - p2) - p1*p1;
 
    for(round=2; round<6; round++)
    {   cout<<"Round "<<round<<"\n";
        roundScore(p1,p2,PR);
        PR *= PR;
    }
 
 
    cin.sync();cin.get();
    return 0;
}
Ход боя в зависимости от умений противников:
0
Миниатюры
Определить вероятности исходов боя бомбардировщика с истребителями   Определить вероятности исходов боя бомбардировщика с истребителями  
Заблокирован
02.05.2013, 07:01 3
Было бы еще интересно написать эмуляцию боя - постараюсь сегодня сделать.
0
Заблокирован
02.05.2013, 16:25 4
Эмуляция:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream>
#include <ctime>
using namespace std;
 
int niceShot(double p)
{   int i,res;
    for(i=0; i<=rand()%100+1; i++) //shuffle and shuffle and...
        res = rand()%RAND_MAX;
    if(res/(RAND_MAX*1.) < p)
        return 1;
    return 0;
}
 
int main()
{   double p1,p2;
    int round = 1, bomber = 1, fighter = 2;
    cout<<"p1 = ";
    cin>>p1;
    cout<<"p2 = ";
    cin>>p2;
 
    srand((unsigned int) time(NULL));
 
    while(fighter>0)
    {   cout<<"\nROUND "<<round<<"\n";
        cout<<"\tBomber "<<bomber<<"\n";
        cout<<"\tFighter "<<fighter<<"\n";
 
        if(niceShot(p1)) 
        {   cout<<"One fighter down\n";
            fighter--;
        }
        if(fighter && niceShot(p1)) 
        {   cout<<"One fighter down\n";
            fighter--;
        }
        
        if(!fighter) break;
 
        if(niceShot(p2)) 
        {   cout<<"Bomber down\n";
            break;
        }
        if(niceShot(p2)) 
        {   cout<<"Bomber down\n";
            break;
        }
        round++;
    }
    
    cout<<"\nGAME OVER\n";
    
    cin.sync();cin.get();
    return 0;
}
При шансах 1 из 10000 на 4662 обмене выстрелами бомбер победил)

Некоторые выводы:
1) бить первым - выгодно
2) даже если шансы быть уничтоженным ничтожны, рано или поздно они реализуются
Поучительно )
0
Миниатюры
Определить вероятности исходов боя бомбардировщика с истребителями  
0 / 0 / 0
Регистрация: 29.04.2013
Сообщений: 18
26.05.2013, 19:14  [ТС] 5
А как реализовать эту задачу на С++ методом Монте-Карло?
0
0 / 0 / 0
Регистрация: 29.04.2013
Сообщений: 18
29.05.2013, 19:47  [ТС] 6
Что такое q1,q2 и PR
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.05.2013, 19:47

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Что значит "счетное число исходов" для пространства элементарных исходов
Здравствуйте, подскажите, пожалуйста, что значит &quot;счетное число исходов&quot; для пространства...

Из какого числа равновозможных элементарных исходов состоит пространство элементарных исходов эксперимента?
Из какого числа равновозможных элементарных исходов состоит пространство элементарных исходов ...

Шахматы: определить поля боя фигуры
Для заданной шахматной фигуры стоящей на заданном поле шахматной доски определить все биты поля...

два бомбардировщика
Два бомбардировщика поочередно сбрасывают бомбы на цель до первого попадания. Вероятность попа- ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.