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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 39, средняя оценка - 4.90
Ailuna
2 / 2 / 0
Регистрация: 16.11.2010
Сообщений: 29
#1

Математическое ожидание, дисперсия - C++

15.06.2011, 12:19. Просмотров 5278. Ответов 27
Метки нет (Все метки)

Добрый день, помогите пожалуйста решить такую задачу:

На отрезке АВ длины а выбраны наудачу два отрезка одинаковой длины с . Найти математическое ожидание и дисперсию длины, перекрытой обоими этими отрезками (т.е.их общей части)
Промоделировать задачу на компьютере,взяв а=20см, с=10см, и повторив эксперимент 1000раз
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2011, 12:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Математическое ожидание, дисперсия (C++):

Использование подпрограммы-процедуры. Математическое ожидание и дисперсия - C++
Нужно найти математическое ожидание и дисперсию случайных величин, записанных в массивах Х(10), У(15). Помогите, надо сдать, а я догнать не...

Найти математическое ожидание, дисперсию, и среднее квадратичное - C++
извините, я новичок на форуме и не знаю куда податься дана задача: задается таблица: x| x1 | x2 | x3 | xn |x++... | p| p1...

Требуется определить математическое ожидание в каждом массиве - C++
Доброго времени суток ребята! Мне нужна ваша помошь. Нужно решить вот такую вот задачу: "имеется несколько массивов данных (разного...

Определить математическое ожидание дискретной случайной величины - C++
помогите решить задачи на C или C++: 1Дан двумерный массив элементов иллюстрирующий закон распределения дискретной случайно велечины ....

Вычислить математическое ожидание, дисперсию и среднеквадратичное отклонение случайной величины - C++
Пусть массив X(N) - массив возможных значений некоторых случайных величин. Составить подпрограмму, которая вычисляет математическое...

Дисперсия, массив - C++
Найти дисперсию элементов массива из символов.

27
Ailuna
2 / 2 / 0
Регистрация: 16.11.2010
Сообщений: 29
15.06.2011, 14:01  [ТС] #2
незнаю с чего начать, как организовать цикл итд. можно сказать -все непонятно
0
Ailuna
2 / 2 / 0
Регистрация: 16.11.2010
Сообщений: 29
15.06.2011, 14:29  [ТС] #3
с определение вероятности проблем нет,но вот когда дело доходит до МО и Дисперсии,то все путается
у меня была задача:В одной урне 3 белых, 3 чёрных и 4 красных шаров, во второй – 6 белых, 2 чёрных и 2 красных шаров. Из каждой урны извлекаются по 3 шара (всего 6 шаров). Какова вероятность, что среди них не будет красных шаров? Повторить эксперимент 1000 раз.эту я решила:
Текс программы:
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
const N=1000;
int main()
{
    int a;
    int b;
    int p=0;
    double c=0;
    int arr1[3];
    int arr2[3];
    srand((unsigned)time(NULL));
    int iteration;
    for(iteration=0;iteration<10;iteration++){
    int x;
    for (x=0;x<N;x++)
    {
/ /  1-beliy   2 – cherniy  3- krasniy
        int urna1[10]={'1','1','1','2','2','2','3','3','3','3'};
        a=0+rand()%10;
        arr1[1]=(urna1[a]-48);
        for(p=a;p<10;p++)
        {
            urna1[p]=urna1[p+1];
            urna1[10]=48;
        }
        p=0;  
        a=0+rand()%9;
        arr1[2]=(urna1[a]-48);
        for(p=a;p<9;p++)
        {
            urna1[p]=urna1[p+1];
            urna1[9]=48;
        }
        p=0;
        a=0+rand()%8;
        arr1[3]=(urna1[a]-48);
        int urna2[10]={'1','1','1','1','1','1','2','2','3','3'};
        b=0+rand()%10;
        arr2[1]=(urna2[b]-48);
        for(p=b;p<10;p++)
        {
            urna2[p]=urna2[p+1];
            urna2[10]=48;
        }
        p=0;
        b=0+rand()%9;
        arr2[2]=(urna2[b]-48);
        for(p=b;p<9;p++)
        {
            urna2[p]=urna2[p+1];
            urna2[9]=48;
        }
        p=0;
        b=0+rand()%8;
        arr2[3]=(urna2[b]-48);
   if((arr1[1]==3)||(arr1[2]==3)||(arr1[3]==3)||(arr2[1]==3)||(arr2[2]==3)||(arr2[3]==3))
           c++;
    }
    c=(N-c)/N;
    printf("iter[%d]veroyatnost = %0.3lf\n",iteration,c);}
    return (0);
}
а как быть с той задачей?? может эту программу переделать как то,но как?
0
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
15.06.2011, 14:53 #4
Прежде, чем писать программу, нужно понять, что тебе нужно посчитать, то есть разобраться с матожиданием и дисперсией.
0
Ruu
13 / 13 / 1
Регистрация: 20.07.2010
Сообщений: 43
15.06.2011, 16:49 #5
Условие задачи, точно такое?
Потому что мат.ожидание от длины брать это как то неправильно.
Мат. ожидание обычно находится от точек на отрезке, а таковых в условии задачи я не вижу.
0
grizlik78
Эксперт С++
1964 / 1457 / 119
Регистрация: 29.05.2011
Сообщений: 3,016
15.06.2011, 16:56 #6
Ruu, а что не так? Длина перекрывающейся части отрезков — случайная величина, хоть и непрерывная. А значит можно найти и мат. ожидание, и дисперсию.
0
Ruu
13 / 13 / 1
Регистрация: 20.07.2010
Сообщений: 43
15.06.2011, 17:40 #7
grizlik78, В том то и дело,что это непрерывная величина с равномерным распределением.
Как в таком случае ты найдешь мат ожидание?
0
grizlik78
Эксперт С++
1964 / 1457 / 119
Регистрация: 29.05.2011
Сообщений: 3,016
15.06.2011, 18:08 #8
Известно как. Пользуясь теорией вероятностей.
Если бы у неё распределение было равномерным, то наоборот, всё было бы очень просто
На самом деле распределение у неё немного сложнее, но если аккуратно взяться за дело, то и его можно найти.
Ну а для моделирования и этого не надо. Теоретическое значение нужно только для проверки.

Добавлено через 1 минуту
Тем временем, программа готова. Осталось только формулу найти и проверить
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
#include <stdio.h>
#include <stdlib.h>
 
#define N 1000
#define A 20.0
#define C 10.0
 
float get_random_len(float a, float c)
{
    float x1, x2;
    if (a < c)
        return 0;
    x1 = rand()*(a-c)/(RAND_MAX+1.0);
    x2 = rand()*(a-c)/(RAND_MAX+1.0);
    if (x2 < x1)
        { float tmp = x1; x1 = x2; x2 = tmp; };
    if (x1 + c < x2)
        return 0;
    return x1 + c - x2;
}
 
int main()
{
    int i;
    float len[N];
    float m = 0, disp = 0;
    srand(time(NULL));
 
    for (i = 0; i < N; ++i)
    {
        len[i] = get_random_len(A, C);
        m += len[i];
    }
    m /= N;
 
    for (i = 0; i < N; ++i)
    {
        float cval = len[i] - m;
        disp += cval*cval;
    }
    disp /= N;
 
    printf("mean: %f\ndisp: %f\n", m, disp);
 
    return 0;
}
2
Ruu
13 / 13 / 1
Регистрация: 20.07.2010
Сообщений: 43
15.06.2011, 18:28 #9
Я не понял условие задачи значит) теперь все ясно)
0
Ailuna
2 / 2 / 0
Регистрация: 16.11.2010
Сообщений: 29
15.06.2011, 21:57  [ТС] #10
пишет ошибку : "time" was not declared in this scope,, а мы разве определяли ее?
можно пожалуйста комментарии к программе, а то некоторые моменты непонятны
спасибо, попробую найти формулы
0
shilovec5377
29 / 54 / 1
Регистрация: 26.05.2011
Сообщений: 752
15.06.2011, 22:07 #11
Могу сбросить прогу на Delphi!!!
0
Ailuna
2 / 2 / 0
Регистрация: 16.11.2010
Сообщений: 29
15.06.2011, 22:34  [ТС] #12
спасибо конечно,но язык Delphi сложноват , можно тогда с комментариями?
0
shilovec5377
29 / 54 / 1
Регистрация: 26.05.2011
Сообщений: 752
15.06.2011, 22:47 #13
Delphi
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
Там более менее подписано, что находим:
procedure TForm2.Button2Click(Sender: TObject);
 Var
Y,k,Me,R,Z,Xmax,Xmin,i:integer;
q3,q1,asimetria,mediana,med,q2,q,maxM, sigma,xx2,vd,Ex,moi,cv,n,Xi,ser:real;
 
 
begin
Xi:=0;
n:=0;
 Z:=( StrToInt (edit1.text));
Xmax:=strtoint(StringGrid1.Cells[z,0]);
Xmin:=strtoint(StringGrid1.Cells[1,0]);
 for i := 1 to  z   do
 Begin
 moi:=moi+(StrTofloat(StringGrid1.Cells[i,0])*StrTofloat(StringGrid1.Cells[i,1]));
     n:=n+StrTofloat(StringGrid1.Cells[i,1]);
 Xi:=Xi+StrToFloat(StringGrid1.Cells[i,0]);
     cv:=(1/n)*(moi);
   R:=Xmax-Xmin;
 End;
{----------------moda----------------------------------}
 Z:=( StrToInt (edit1.text));
 maxM:=strtofloat(StringGrid1.Cells[1,1]);
for i:=1 to   z  do
if (strtofloat(StringGrid1.Cells[i,1]))>maxM then
begin
  maxM:=strtofloat(StringGrid1.Cells[i,1]);
   k:=i;
end;
  Me:=strtoint(StringGrid1.Cells[k,0]);
{----------------------vd----------------------------}
  for i := 1 to z do
    begin
xx2:=xx2+(sqr(StrTofloat(StringGrid1.Cells[i,0])))*(StrTofloat(StringGrid1.Cells[i,1]));
    end;
vd:=  (xx2/n)-sqr(cv);
 sigma:=sqrt(vd);
{--------------------эксцесс------------------------}
for i := 1 to z do
    begin
q2:=q2+sqr(strtofloat((StringGrid1.Cells[i,0]))-(cv))*sqr(strtofloat((StringGrid1.Cells[i,0]))-(cv));
    end;
q:=n*(sqr(sigma)*sqr(sigma));
  Ex:=(q2/q )-3;
 
{-------------------асиметрия----------------------}
 for i := 1 to z do
    begin
q2:=q2+sqr(strtofloat((StringGrid1.Cells[i,0]))-(cv))*(strtofloat((StringGrid1.Cells[i,0]))-(cv));
    end;
q:=n*(sqr(sigma)* (sigma));
  asimetria:=(q2/q);
{--------------------mediana-----------------------}
 
     begin
if z mod 2=0 then  ser:=(strtofloat(StringGrid1.Cells[z div 2,0])+strtofloat(StringGrid1.Cells[(z div 2+1),0]))/2
             else  ser:= strtofloat(StringGrid1.Cells[(z div 2+1),0])/2;
 
     end;
Memo1.Lines.Text:='Размах вариации = '+RealToStr(R,2)+#13+'Среднее Выборочное = '+RealToStr(cv,2)+#13+
'Мода = '+RealToStr(Me,2)+#13+'Выборочная дисперсия = '+RealToStr(vd,2)
+#13+'Среднее квадратическое отклонение = '+RealToStr(sigma,2)+#13+'Эксцесс = '+RealToStr(Ex,2)+#13+
'Медиана = '+RealToStr(ser,2)+#13+'Асиметрия = '+RealToStr(asimetria,2);
 
end;
Добавлено через 1 минуту
Вот exe-шник
0
Ailuna
2 / 2 / 0
Регистрация: 16.11.2010
Сообщений: 29
15.06.2011, 22:48  [ТС] #14
а какую задачу(условие какое) она решает?
0
shilovec5377
29 / 54 / 1
Регистрация: 26.05.2011
Сообщений: 752
15.06.2011, 22:50 #15
Вот какие характеристики она находит:
Delphi
1
2
3
4
Memo1.Lines.Text:='Размах вариации = '+RealToStr(R,2)+#13+'Среднее Выборочное = '+RealToStr(cv,2)+#13+
'Мода = '+RealToStr(Me,2)+#13+'Выборочная дисперсия = '+RealToStr(vd,2)
+#13+'Среднее квадратическое отклонение = '+RealToStr(sigma,2)+#13+'Эксцесс = '+RealToStr(Ex,2)+#13+
'Медиана = '+RealToStr(ser,2)+#13+'Асиметрия = '+RealToStr(asimetria,2);
Добавлено через 20 секунд
они выделены красным
0
15.06.2011, 22:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2011, 22:50
Привет! Вот еще темы с ответами:

Выборочное среднее и выборочная дисперсия - C++
Здравствуйте. Есть показательное распределение (левое). Промоделировано 1000 значений методом обратной функции. Теперь нужно вывести на...

Дисперсия выборки из пяти заданных чисел - C++
задание: Запишите алгоритм программы, определяющей дисперсию выборки из пяти заданных чисел. Составьте программу на языке С++,...

математическое решение в С - C++
Решите пожалуйста в С

математическое решение в С - C++
Решите пожалуйста в С : Составить программу для вычисления значений функции F(x) на отрезке с шагом h. Результат представить в виде...


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

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

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