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

Расчитать Хи^2 - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Стек, очередь и двусвязный список http://www.cyberforum.ru/cpp-beginners/thread1192686.html
Задание: Решить для случая реализации списка в виде стека, очереди и двусвязного списка: Разработать процедуры и функции, предварительно выбрав для представления данных соответствующую списковую структуру, для решения следующих задач: - определить, симметричен ли заданный во входном файле текст (за ним следует точка); - дана последовательность из не менее чем двух различных натуральных чисел,...
C++ Поле со списком Установлено соединение с БД Access. Средствами C# поместил на область данных поле со списком. Какой командой вывести информацию с БД в поле со списком? http://www.cyberforum.ru/cpp-beginners/thread1192675.html
C++ Ошибка оператора pow
#include <conio.h> #include <locale.h> #include <iostream> #include <cmath> #include <string.h> using namespace std; int main() { int i,l,k,z,f; i=0;
Сохранение в структуру C++
Здравствуйте! Вы б не могли глянуть в чем проблема, не хочет сохранять структуру( вот код void search_red_product (Products*Ps,Product &D) { clrscr(); if(!Ps) { cout<<"Cpicok pyct"<<endl; cout<<endl<<"Dla perehoda v menu najmite ENTER"<<endl; getchar(); return;
C++ Пожалуйста, расшифруйте код http://www.cyberforum.ru/cpp-beginners/thread1192639.html
Есть код программы. Программа вычисляет максимальный поток по алгоритму Форда-Фалкерсона . В программе есть цикл, педагог спрашивает, каким образом программа выходит из этого цикла. И почему addFlow всегда равняется единичке. Заранее спасибо. #include <memory.h> #include<conio.h> #include <stdio.h> #include <locale.h>
C++ Параллельное программирование Подскажите, пожалуйста, как в PUTTY начать редактировать файл? подробнее

Показать сообщение отдельно
sektor2009
3 / 3 / 0
Регистрация: 15.03.2009
Сообщений: 339

Расчитать Хи^2 - C++

29.05.2014, 17:29. Просмотров 297. Ответов 2
Метки (Все метки)

как для этой программы рассчитать ХИ^2 по этой формуле, а именно у нас все есть кроме pk - как его найти ? экспоненциального распределения

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h> 
#include <conio.h> 
#include <math.h>
#include <iostream>
#include<stdlib.h>
FILE *a;
double chisla[100000];//100000 рандомных чисел по вычетам
double X[100000];
double *interval;
double M=123456789;
double h=2;
double X21,X22;//Хи квадрат для 2-х случаев
double step;//шаг интервала
double U;//определяет начальное число для счёта количеств
bool complite=false;//число в этом интервале или нет
double c,b;//интервалы
int s=0;//промежуточное значение для числа
int kolvo;
int k=16; //количество интервалов
int i;
using namespace std;
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
void tabl()//вывод таблицы на экран
{
    U=c;
    i=0;
    while(i<k)
    {
        cout<<"interval = ["<<U<<";"<<U+step<<") "<<"kol-vo = "<<interval[i]<<" Veroyatnost = "<<interval[i]/kolvo<<"\n";
        U=U+step;
        i++;
    }
}
void main(void)
{
 
cout<<"\n a = ";
cin>>c;
cout<<"\n b = ";
cin>>b;
 
    //1 пункт
    a=fopen("Exp_random.txt","w");
    chisla[0]=pow(2.0,-42.0);
    cout.precision(5);
 
    for(i=1;i<99999;i++)//расчёт рандомной величины (0;1)
    {
    chisla[i]=M*chisla[i-1];
    chisla[i]=fmod(chisla[i],1);
    //cout<<chisla[i]<<"\n";
    }
    interval=new double[k];
    for(i=0;i<k;i++)//обнуляем новый массив
    {
        interval[i]=0;
    }
    step=(b-c)/k;//определение шага
        for(i=0;i<99999;i++)//расчёт случайной величины экспоненциального распределения
    {
    X[i]=-h*log(chisla[i]);
        if(i%100==0)
    {
fprintf(a,"%f \n",X[i]);
    }//запись в файл
    //cout<<chisla[i]<<"\n";
    }
 
        i=0;    
        kolvo=0;
        while(i<100000)//цикл нахождения частот и СВ
        {
                s=0;
                U=c;
                complite=false;
            while(complite==false&&X[i]>c&&X[i]<b)
            {
                if(U<X[i]&&X[i]<U+step)//проверяем какому промежутку принадлежит число
                {
                    complite=true;
                    interval[s]++;//определяем количество попаданий
                    kolvo++;
                }
                else
                {
                    U=U+step;//переходим на следующий отрезок
                }
                s++;
            }
 
            i++;
        }
        X21=0;
        X22=0;
        for(i=0;i<k;i++)//нахождение хи квадрат для первого случая
        {
            X21+=(pow(interval[i]-kolvo*((interval[i])/(kolvo)),2))/(kolvo*((interval[i])/(kolvo)));
        }
        tabl();
        cout<<"\n X2 = "<<X21<<"\n";
    
 
        //пункт 2
for(i=0;i<k;i++)//обнуляем новый массив
    {
        interval[i]=0;
    }
 
i=0;
fclose(a);
a=fopen("Obr_F.txt","w");
while(i<100000)//генерация случайной величины на отрезке cb
{
    X[i]=c+chisla[i]*(b-c);
    if(i%100==0)
    {
fprintf(a,"%f \n",X[i]);
    }
i++;
}
i=0;
kolvo=0;
while(i<100000)//цикл нахождения частот и СВ
        {
                s=0;
                U=c;
                complite=false;
                while(complite==false&&X[i]>c&&X[i]<b)
            {
                if(U<X[i]&&X[i]<U+step)//проверяем какому промежутку принадлежит число
                {
                    complite=true;
                    interval[s]++;//определяем количество попаданий
                    kolvo++;
                }
                else
                {
                    U=U+step;//переходим на следующий отрезок
                }
                s++;
            }
 
            i++;
        }
        for(i=0;i<k;i++)//нахождение хи квадрат для второго случая
        {
            X22+=(pow(interval[i]-kolvo*((interval[i])/(kolvo)),2))/(kolvo*((interval[i])/(kolvo)));
        }
        tabl();
        cout<<" \n X2 = "<<X22<<"\n";
        fclose(a);
        system("PAUSE");
    
}
Миниатюры
Расчитать Хи^2  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru