Форум программистов, компьютерный форум CyberForum.ru

Метод Монте-Карло - C++

Восстановить пароль Регистрация
 
Z_S
0 / 0 / 0
Регистрация: 16.10.2010
Сообщений: 24
15.12.2011, 20:10     Метод Монте-Карло #1
Подскажите правильно ли реализована программа на С++ Builder?

N стрелков стреляют поочередно по одной мишени. Стрельба ведется до первого попадания. Вероятность попасть в мишень для каждого стрелка равна рi (i=1, 2, ... , N). Выигравшим считается тот стрелок, который первым попадет в мишень. У каждого стрелка в запасе имеется n патронов. Определить вероятность того, что выиграет i-й стрелок.

void main()
{
setlocale(LC_ALL,"Rus");
int isp = 10000;
cout<<"Введите количество стрелков: ";
int N;
cin>>N;
system("cls");
cout<<"Введите количество патронов: ";
int n;
cin>>n;
system("cls");
double* p=new double;
for (int i=0; i<N; i++)
{
cout<<"Введите вероятность попадания "<<i+1<<" стрелка: ";
cin>>p[i];
system("cls");
}
bool* t=new bool;
int* ost=new int;
for (int i=0; i<N; i++)
ost[i]=0;
float m1=0;
float m2=0;
for(int o=0;o<isp;o++)
{
for(int i=0;i<N;i++)
for(int j=0;j<k

{ int r=rand()%100;
if (r<p[i]*100)
{
t[i]=true;
ost[i]=n-j-1;
j=4;
}
j++;
}
int sch=0;
for(int i=0;i<N;i++)
{
if (t[i]==true && ost[i]>0)
sch++;
}
if (sch==n)
m1++;
if (sch==n-1)
m2++;
}
cout<<"Вероятность попадания всех "<<n<<" стрелков с неизрасходованным 1 патроном = "<<(m1/(isp*1.0))*100<<"%"<<endl;
cout<<"Вероятность что попадут "<<n-1<<" стрелка = "<<(m2/(isp*1.0))*100<<"%"<<endl;
system("PAUSE");
}

Это задание не знаю как реализовать. Подскажите, пожалуйста.
По некоторому объекту ведется стрельба n независимыми выстрелами. Объект состоит из k частей (элементов). Вероятность попадания в i-ый элемент равна p i-ое ( i=1,2,...k)/ Найти вероятность Р того, что в результате стрельбы будет m0(нулевое) промахов, m1 (первое) попаданий в 1 элемент и т.д., вообще m i-ое попаданий в i-ый элемент. ( i=1,2,...k), Сумма элементов m i-ое от i=0 до k равна n.
for (int i=0;i<m;i++)
for (int j=0;i<n;j++)
r1=random(100)/100 // это будет вероятность попадания. НО функция должна быть написана ВРУЧНУЮ. Random у меня здесь как пример.
if r1<p[i] then
a[i]=a[i]+1; // a-это массив, где хранится количество выстрелов в каждый элемент.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2011, 20:10     Метод Монте-Карло
Посмотрите здесь:

метод Монте-Карло C++
C++ метод Монте-Карло
C++ Метод Монте-Карло
C++ Метод монте Карло
C++ вроде метод монте карло
Метод Монте-Карло. Объем сферы C++
C++ Метод Монте-Карло
C++ Метод Монте Карло (неправильные значения)

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 11:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru