• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Генерирование вещественных чисел

Виктория 24

Ученик
Регистрация
6 Апр 2013
Сообщения
11
Реакции
1
Баллы
0
Генерирование вещественных чисел

Здравствуйте! Пишу программу Генератор случайных чисел Методом Середины Квадратов на Delphi.
Мат.ожидание высчитывает правильно (примерно "0,5"). (Цикл мат.ожидания пока заключила в скобки)
Скажите, правильно ли я написала код для вычисления значения дисперсии D = 1/12 (~ 0,083) согласно формуле. (Скрин.) А то что-то не то высчитывает...
Код:
begin
        sum2:= sum + sqr(chisla[j]-0.5);
        inc(j,1);
end;
     Edit6.Text:=floattostr((1/N)*sum2); // Дисперсия
 

Вложения

  • bdiag.webp
    bdiag.webp
    39.5 KB · Просмотры: 80
  • Лаба 2.rar
    Лаба 2.rar
    238.9 KB · Просмотры: 33
В куске представленного кода нет цикла. Подозреваю что вы его оставили за кадром. Если вычисления проходят в цикле то формула на рисунке реализована программно правильно.
Но вот только
Дисперсия равна разности между математическим ожиданием квадрата случайной величины и квадратом ее математического ожидания.
D(X)=M(X^2)-[M(X)]^2.

Проще, в данной формуле откуда то взялось деление на N.

Возможно так получиться
Код:
sum2:=0;
for j:=1 to N do
begin
        sum2:= sum2 + sqr(chisla[j]-0.5);
end;
в sum2 это будет дисперсия.
 
Естественно, не то. Потому что должно быть так:
sum2:= sum2 + sqr(chisla[j]-0.5);
Да, действительно, заработало!
Проще, в данной формуле откуда то взялось деление на N.Даже не знаю
что вам сказать в свое оправдание...
Может скриншот нашей лекции спасетtehno042
Вот что у меня получилось:
Код:
j:=1;
      sum:=0;
      sum2:=0;
      sum3:=0;
      //for j:=1 to N do
      while j <= High(chisla) do

      begin
        {sum:= sum + chisla[j];
        inc(j,1);
        Edit5.Text:=floattostr((1/N)*sum); // Мат.ожидание}

        sum2:= sum2 + sqr(chisla[j]-0.5);
        inc(j,1);
        Edit6.Text:=floattostr((1/N)*sum2); // Дисперсия

        {sum3:= sum3 + sqr(chisla[j]);
        inc(j,1);
        Edit7.Text:=floattostr((1/N)*sum3); // Сумма квадратов}
      end;
Но как-то кривовато работает, если считает все аспекты сразу!
А если по отдельности, то правильно.
 

Вложения

  • 10042013493.webp
    10042013493.webp
    146 KB · Просмотры: 158
в sum2 это будет дисперсия.
Извините, сударь, но НИ В КОЕМ СЛУЧАЕ! В Sum2 появится лишь сумма квадратов отклонений случайной величины от матожидания, каковая отнюдь дисперсией не является. По "физической" сути этот самый второй момент (дисперсия) есть мера средневзвешенного отклонения реализаций случайной величины от математического ожидания. В куче книжек показано, что в случае равномерного распределения дискретной случайной величины математическое ожидание есть среднее арифметическое всех реализаций, а дисперсия - среднее значение квадрата отклонения, т.е. сумма квадратов отклонений, деленная на количество проб.
 
Здравствуйте уважаемый Vladimir_S.
С N это действительно я пере умничал или не до умничал.:tehnari_ru_325:
В любом случаи спасибо а то так и помёр бы не просвещенным, за то теперь можно пойти спокойно умереть со стыда.:tehnari_ru_102:
 
Здравствуйте уважаемый Vladimir_S.
С N это действительно я пере умничал или не до умничал.:tehnari_ru_325:
В любом случаи спасибо а то так и помёр бы не просвещенным, за то теперь можно пойти спокойно умереть со стыда.:tehnari_ru_102:
Ой! Что-то последнее время людей стал ненароком обижать... Извините. Кстати, сам, бывает, ляпы допускаю. И всегда прошу меня без экивоков харей тыкать, если кто заметит.
А умирать - всегда успеете. Не надо. Давайте еще поживем. Во благо нерадивых студентов.
 
Назад
Сверху