\- функция 1: аргумент - список или кортеж с выборкой наблюдений; функция должна произвести расчет по выборке оценок математического ожидания, стандартного отклонения, медианы, наименьшего и наибольшего значений и вернуть их в виде списка в вызывающую программу;
- функция 1: аргумент - список или кортеж с выборкой наблюдений; функция должна произвести расчет по выборке оценок математического ожидания, стандартного отклонения, медианы, наименьшего и наибольшего значений и вернуть их в виде списка в вызывающую программу;
\- функция 2; аргументы - список или кортеж с выборкой наблюдений и целочисленный параметр m; функция должна произвести расчет по этой выборке гистограммы распределения случайной величины с m интервалами и вернуть ее в виде списка в вызывающую программу.
- функция 2; аргументы - список или кортеж с выборкой наблюдений и целочисленный параметр m; функция должна произвести расчет по этой выборке гистограммы распределения случайной величины с m интервалами и вернуть ее в виде списка в вызывающую программу.
2\) Создайте еще один модуль М2, в котором должны выполняться следующие операции:
2) Создайте еще один модуль М2, в котором должны выполняться следующие операции:
\- запрашивается имя текстового файла с выборкой, проверяется его наличие и при отсутствии - повторяется запрос;
- запрашивается имя текстового файла с выборкой, проверяется его наличие и при отсутствии - повторяется запрос;
\- выборка вводится из файла и записывается в список (в строках файла может быть разное число значений, разделенных пробелами);
- выборка вводится из файла и записывается в список (в строках файла может быть разное число значений, разделенных пробелами);
\- запрашивается число интервалов для гистограммы (с проверкой его принадлежности к интервалу от 2 до 10);
- запрашивается число интервалов для гистограммы (с проверкой его принадлежности к интервалу от 2 до 10);
\- с помощью функций 1 и 2 по выборке рассчитывается оценки статистических параметров случайной величины;
- с помощью функций 1 и 2 по выборке рассчитывается оценки статистических параметров случайной величины;
\- гистограмма отображается на экране в виде диаграммы;
- гистограмма отображается на экране в виде диаграммы;
\- рассчитанные значения записываются в бинарный файл Res1010.bib.
- рассчитанные значения записываются в бинарный файл Res1010.bib.
3\) Создайте модуль М0 - главную программу, которая вызывает М2 и отображает результаты расчета на экране.
3) Создайте модуль М0 - главную программу, которая вызывает М2 и отображает результаты расчета на экране.
4\) Проведите расчеты с 2 файлами с исходными данными.
4) Проведите расчеты с 2 файлами с исходными данными.
\## Решение
## Решение
Содержимое модуля M1:
@ -58,71 +58,71 @@
def stats(t):
t = list(t)
t = list(t)
N = len(t)
N = len(t)
m = sum(t)/N
m = sum(t)/N
s = 0
s = 0
for i in t:
for i in t:
s += (i - m)\*\*2
s += (i - m)\*\*2
std = s\*\*0.5
std = s\*\*0.5
t.sort()
t.sort()
med = 0
med = 0
if N%2 != 0: med = t\[N//2]
if N%2 != 0: med = t\[N//2]
else:
else:
med = (t\[N//2 - 1] + t\[N//2])/2
med = (t\[N//2 - 1] + t\[N//2])/2
return \[m,std,med,min(t),max(t)]
return \[m,std,med,min(t),max(t)]
def hist(t,m):
t = list(t)
t = list(t)
f = False
f = False
N = len(t)
N = len(t)
L = max(t) - min(t)
L = max(t) - min(t)
l = L//m
l = L//m
lg = min(t)
lg = min(t)
rg = min(t)+l
rg = min(t)+l
res = \[]
res = \[]
for j in range(m):
for j in range(m):
k = 0
k = 0
for i in range(N):
for i in range(N):
if (t\[i] >= lg) and (t\[i] <rg):
if (t\[i] >= lg) and (t\[i] <rg):
k+=1
k+=1
res.append(k)
res.append(k)
lg += l
lg += l
rg += l
rg += l
res\[-1] = res\[-1]+1
res\[-1] = res\[-1]+1
return res
return res
```
@ -146,15 +146,15 @@ fName = input('Введите имя файла: ')
if os.path.exists(fName) == True:
print('Успешно! Файл найден!')
print('Успешно! Файл найден!')
else:
while os.path.exists(fName) != True:
while os.path.exists(fName) != True:
print('Такой файл не найден!')
print('Такой файл не найден!')
fName = input('Введите имя файла: ')
fName = input('Введите имя файла: ')
@ -164,7 +164,7 @@ data = fp.read()
fp.close()
ls = list(map(int, data.replace('\\n', ' ').split(' ')))
ls = list(map(int, data.replace('\n', ' ').split(' ')))
@ -172,11 +172,11 @@ m = int(input('Введите количество интервалов m (m > 2
if (m <= 2) or (m >= 10):
while (m <= 2) or (m >= 10):
while (m <= 2) or (m >= 10):
print('Недопустимое значение!')
print('Недопустимое значение!')
m = int(input('Введите m: '))
m = int(input('Введите m: '))
@ -186,11 +186,11 @@ hs = M1.hist(ls,m)
print('Гистограмма по данным (количество \* - количество значений в интервале):')
print('Гистограмма по данным (количество * - количество значений в интервале):')