Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Программа





Вариант программы для 2 задачи:

#include <iostream>

#include <cstdlib>

#include <cmath>

 

#define rand_prob() (double(rand()) / RAND_MAX)

#define read(text, var) \

std::cout << "Enter " << text << ": "; \

std::cin >> var

 

#define CONDITION_VAR1 (xi < 1 - pow(1 - p[i][tminind[i]], m[i]))

#define CONDITION_VAR3 CONDITION_VAR1 && (xi < m[3-i] / n[3-i])

#define CONDITION CONDITION_VAR1

 

int main() {

int n[3], i, j, s, m[5], k, tminind[3];

bool q;

double *p[5], *l[3], d[3], *t[3], xi, t0, tmin[3];

 

read("n1", n[1]);

read("n2", n[2]);

 

l[1] = new double[n[1]];

l[2] = new double[n[2]];

p[1] = new double[n[1]];

p[2] = new double[n[2]];

p[3] = new double[n[1]];

p[4] = new double[n[2]];

t[1] = new double[n[1]];

t[2] = new double[n[2]];

 

std::cout << "Enter \u03bb1 elements" << std::endl;

for (i = 0; i < n[1]; ++i) {

read(i, l[1][i]);

}

std::cout << "Enter p1 elements" << std::endl;

for (i = 0; i < n[1]; ++i) {

read(i, p[1][i]);

}

std::cout << "Enter \u03bb2 elements" << std::endl;

for (i = 0; i < n[1]; ++i) {

read(i, l[2][i]);

}

std::cout << "Enter p2 elements" << std::endl;

for (i = 0; i < n[1]; ++i) {

read(i, p[2][i]);

}

read("s ", s);

read("\u0394 ", d[0]);

srand(time(NULL));

 

t0 = 0;

for (i = 0; i < n[1]; ++i)

p[3][i] = 0;

for (i = 0; i < n[2]; ++i)

p[4][i] = 0;

m[3] = 0;

m[4] = 0;

 

for (k = 1; k <= s; ++k) {

for (i = 2; i >= 1; --i) {

m[i] = n[i];

for (j = 0; j < n[i]; ++j) {

d[i] = d[0]*n[i];

t[i][j] = -log(1 - rand_prob()) / (l[i][j] * m[i]);

if (!j || t[i][j] < tmin[i]) {

tmin[i] = t[i][j];

tminind[i] = j;

}

}

}

 

 

q = false;

while (!q) {

i = (t[1] < t[2])? 1: 2;

xi = rand_prob();

if (CONDITION)

m[3-i] -= 1;

for (j = 0; j < n[i]; ++j) {

if (m[3-i] < d[3-i]) {

++p[2+i][j];

t0 += t[i][j];

q = true;

}

t[i][j] -= log(1 - rand_prob()) / (l[i][j] * m[i]);

}

}

 

m[3] += m[1];

m[4] += m[2];

}

 

std::cout << std::endl;

std::cout << "P[win1] =";

for (i = 0; i < n[1]; ++i)

std::cout << " " << p[3][i] / s;

std::cout << std::endl << "P[win2] =";

for (i = 0; i < n[2]; ++i)

std::cout << " " << p[4][i] / s;

std::cout << std::endl;

std::cout << "M[1] = " << m[3] / s << std::endl;

std::cout << "M[2] = " << m[4] / s << std::endl;

std::cout << "T = " << t0 / s << std::endl;

 

delete[] l[1];

delete[] l[2];

delete[] p[1];

delete[] p[2];

delete[] p[3];

delete[] p[4];

delete[] t[1];

delete[] t[2];

 

return 0;

}

Вариант программы для 1 и 3 задач:

#include <iostream>#include <cstdlib>#include <cmath> #define rand_prob() (double(rand()) / RAND_MAX)#define read(text, var) \ std::cout << "Enter " << text << ": "; \ std::cin >> var #define CONDITION_VAR1 (xi < 1 - pow(1 - p[i], m[i]))#define CONDITION_VAR3 CONDITION_VAR1 && (xi < m[3-i] / n[3-i])#define CONDITION CONDITION_VAR1 int main() { int n[3], i, s, m[5], k; bool q; double p[5], l[3], d[3], t[3], xi; read("n1", n[1]); read("\u03bb1", l[1]); read("p1", p[1]); read("n2", n[2]); read("\u03bb2", l[2]); read("p2", p[2]); read("s ", s); read("\u03b4 ", d[0]); srand(time(NULL)); t[0] = 0; p[3] = 0; p[4] = 0; m[3] = 0; m[4] = 0; for (k = 1; k <= s; ++k) { for (i = 2; i >= 1; --i) { d[i] = d[0]*n[i]; m[i] = n[i]; t[i] = -log(1 - rand_prob()) / (l[i] * m[i]); } q = false; while (!q) { i = (t[1] < t[2])? 1: 2; xi = rand_prob(); if (CONDITION) m[3-i] -= 1; if (m[3-i] < d[3-i]) { ++p[2+i]; t[0] += t[i]; q = true; } t[i] -= log(1 - rand_prob()) / (l[i] * m[i]); } m[3] += m[1]; m[4] += m[2]; } std::cout << std::endl; std::cout << "P[win1] = " << p[3] / s << std::endl; std::cout << "P[win2] = " << p[4] / s << std::endl; std::cout << "M[1] = " << m[3] / s << std::endl; std::cout << "M[2] = " << m[4] / s << std::endl; std::cout << "T = " << t[0] / s << std::endl; return 0;}

Date: 2015-08-15; view: 233; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.009 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию