Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

6.1 KiB

Тест по модулю 3

Турханов Артем, А-03-23, Вариант 30

Задание

  1. Создайте модуль М1, содержащий две функции:
  • функция 1: аргумент - список или кортеж с выборкой наблюдений; функция должна произвести расчет по выборке оценок математического ожидания, стандартного отклонения, медианы, наименьшего и наибольшего значений и вернуть их в виде списка в вызывающую программу;

  • функция 2; аргументы - список или кортеж с выборкой наблюдений и целочисленный параметр m; функция должна произвести расчет по этой выборке гистограммы распределения случайной величины с m интервалами и вернуть ее в виде списка в вызывающую программу.

  1. Создайте еще один модуль М2, в котором должны выполняться следующие операции:
  • запрашивается имя текстового файла с выборкой, проверяется его наличие и при отсутствии - повторяется запрос;

  • выборка вводится из файла и записывается в список (в строках файла может быть разное число значений, разделенных пробелами);

  • запрашивается число интервалов для гистограммы (с проверкой его принадлежности к интервалу от 2 до 10);

  • с помощью функций 1 и 2 по выборке рассчитывается оценки статистических параметров случайной величины;

  • гистограмма отображается на экране в виде диаграммы;

  • рассчитанные значения записываются в бинарный файл Res1010.bib.

  1. Создайте модуль М0 - главную программу, которая вызывает М2 и отображает результаты расчета на экране.

  2. Проведите расчеты с 2 файлами с исходными данными.

Решение

Содержимое модуля M1:


def stats(t):

   t = list(t)

   N = len(t)

   m = sum(t)/N

   s = 0

   for i in t:

       s += (i - m)\*\*2

   std = s\*\*0.5

   t.sort()

   med = 0

   if N%2 != 0: med = t\[N//2]

   else:

       med = (t\[N//2 - 1] + t\[N//2])/2

   return \[m,std,med,min(t),max(t)]



def hist(t,m):

   t = list(t)

   f = False

   N = len(t)

   L = max(t) - min(t)

   l = L//m

   lg = min(t)

   rg = min(t)+l

   res = \[]

   for j in range(m):

       k = 0

       for i in range(N):

           if (t\[i] >= lg) and (t\[i] < rg):

               k+=1

       res.append(k)

       lg += l

       rg += l

   res\[-1] = res\[-1]+1

   return res

Содержимое модуля M2:


import M1

import os

import pickle





fName = input('Введите имя файла: ')

if os.path.exists(fName) == True:

   print('Успешно! Файл найден!')

else:

   while os.path.exists(fName) != True:

       print('Такой файл не найден!')

       fName = input('Введите имя файла: ')



fp = open(fName, 'r')

data = fp.read()

fp.close()

ls = list(map(int, data.replace('\n', ' ').split(' ')))



m = int(input('Введите количество интервалов m (m > 2; m < 10): '))

if (m <= 2) or (m >= 10):

   while (m <= 2) or (m >= 10):

       print('Недопустимое значение!')

       m = int(input('Введите m: '))



st = M1.stats(ls)

hs = M1.hist(ls,m)



print('Гистограмма по данным (количество * - количество значений в интервале):')

for i in range(m):

   print(hs\[i]\*'\*')





b = open('Res1010.bin', 'wb')

pickle.dump(st, b)

b.close()



Содержимое модуля M0:


import M2

print('Мат. ожидание: ',M2.st[0])

print('Стандартное отклонение: ',M2.st[1])

print('Медиана: ',M2.st[2])

print('Минимальное значение: ',M2.st[3])

print('Максимальное значение: ',M2.st[4])



Содержимое файла data.txt:

d.png

Содержимое файла data2.txt:

d2.png

Запуск модуля M0:


= RESTART: D:/!!!Download/Documents/учёба МЭИ/5 СЕМЕСТР/GIT/python-labs/TEMA9/M0.py

Введите имя файла: data2.txt

Успешно! Файл найден!

Введите количество интервалов m (m > 2; m < 10): 7

Гистограмма по данным (количесто \* - количество значений в интервале):

\*\*\*

\*\*\*\*

\*\*\*\*\*\*

\*\*

\*\*\*\*

\*

\*\*\*\*

Мат. ожидание:  4.5

Стандартное отклонение:  13.228756555322953

Медиана:  4.0

Минимальное значение:  1

Максимальное значение:  9



= RESTART: D:/!!!Download/Documents/учёба МЭИ/5 СЕМЕСТР/GIT/python-labs/TEMA9/M0.py

Введите имя файла: data.txt

Успешно! Файл найден!

Введите количество интервалов m (m > 2; m < 10): 5

Гистограмма по данным (количесто \* - количество значений в интервале):

\*\*

\*

\*\*\*

\*\*

\*\*\*

Мат. ожидание:  4.266666666666667

Стандартное отклонение:  7.933053216343208

Медиана:  4

Минимальное значение:  1

Максимальное значение:  8