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

Критерии Пирсона - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.75
Anfeniest
Сообщений: n/a
26.09.2010, 18:44     Критерии Пирсона #1
Здравствуйте. Есть алгоритм генератора случайных чисел на заданном интервале, элементарный.
Нужно всунуть сюда проверку равномерного распределения этих чисел за критериями Пирсона. Помогите.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <cstdio>
#include <iostream>
using namespace std;
int main()
{
int r;
for (int k = 0; k < 10000; k++)
{
r=rand()%10000;
cout << r << " ";
}
system("PAUSE");
return 0; 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.09.2010, 18:44     Критерии Пирсона
Посмотрите здесь:

Visual Basic Подсчет коэффициента Пирсона
Критерии Пирсона
Matlab Критерий согласия Пирсона
Метод Пирсона
Критерий Пирсона
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
26.09.2010, 19:47     Критерии Пирсона #2
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
const int A=0;
const int B=10000;
const int N_int=10;
const int N=100;
const int Step=(B-A)/N_int;
 
int f(){ return rand()%(B-A) + A; }
 
int main(){
  double Xi = 0;
  unsigned nCount[N_int];
  memset( nCount, 0, sizeof(nCount) );
  for( int i=0;i<N;++i ){
    ++nCount[ f()/Step ];
  }
  for( int i=0;i<N_int;++i ) cout <<nCount[i] << " ";
  cout << endl;
  double dPTeor = 1.0/N_int;
  cout << dPTeor << endl;
  for( int i=0;i<N_int;++i ){
    cout << 1.0*nCount[i]/N << " ";
    Xi+=pow(dPTeor - 1.0*nCount[i]/N, 2.0) / dPTeor;
  }
  cout << endl << Xi*N_int << endl;
}
потом надо взять справочник и проверить для доверительного значения - подходит или нет

Bash
1
2
3
4
11 7 8 13 7 13 13 9 11 8 //кол-во выборок, попавших в интервал
0.1 //теоретическая вероятность попадения в интервал
0.11 0.07 0.08 0.13 0.07 0.13 0.13 0.09 0.11 0.08 //эмперическая вероятность
0.56 //результат
Добавлено через 19 минут
http://www.cyberforum.ru/cgi-bin/latex.cgi?\chi_2(0.1,10-1) = 2,0879 > 0.56
следовательно равномерное
condor2012
2 / 2 / 1
Регистрация: 28.02.2013
Сообщений: 48
06.03.2013, 06:08     Критерии Пирсона #3
Дабы не плодить много тем, напишу тут. А можно переделать, что бы проверялась не равномерность, а экспоненциальность (вроде без ошибок написал ) ?

Добавлено через 22 часа 16 минут
Помогите кто нибудь)
VladSharikov
 Аватар для VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
05.10.2013, 18:01     Критерии Пирсона #4
Цитата Сообщение от alex_x_x Посмотреть сообщение
for( int i=0;i<N;++i ){ ++nCount[ f()/Step ]; }
alex_x_x,
дано на цпп не писал ничего, напомните что эта конструкция означает, пожалуйста.

тоже делаю метод пирсона, к вас это все уложилось в 2.5 строчки, думаю как так просто. пытаюсь разобраться

alex_x_x,
кстати вот. http://ideone.com/vNB9Ow.
все как у вас получилось, а в смысл того, что делается не врублю.
поясните пожалуйста.

p.s.: необязательно, чтобы отвечал только автор кода)))

что означает конструкция
C++
1
2
3
  for( int i=0;i<N;++i ){
    ++nCount[ f()/Step ];
  }
Yandex
Объявления
05.10.2013, 18:01     Критерии Пирсона
Ответ Создать тему
Опции темы

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