# Индивидуальное контрольное задание по теме 9 Коваленко Дмитрий, А-01-23 ## Задание 12 1) Создайте модуль М1, содержащий две функции: - функция 1: аргумент - список SPS и бинарный ключ KL; функция должна создавать новый список с элементами из SPS, упорядоченными по возрастанию (при KL=0) или по убыванию величины (при KL=1); - функция 2: аргумент - список или кортеж; функция должна рассчитать по нему медиану и среднее значение. 2) Создайте еще один модуль М2, в котором должны выполняться следующие операции: - по запросу вводятся параметры выборки случайной величины, подчиняющейся нормальному распределению: N - число элементов выборки, M - её математическое ожидание, D2-дисперсия, - создаётся выборка с заданными параметрами, - у пользователя запрашивается значение бинарного ключа; - с помощью функции 1 по выборке рассчитывается упорядоченный ряд и по нему - медиана и среднее значение; - с помощью функции 2 по выборке рассчитываются оценка матожидания и медиана; - исходная выборка и результаты расчета записываются в бинарный файл Res456.bin. - выборка представляется в виде графика. 3) Создайте модуль М0 - главную программу, которая вызывает М2 и отображает результаты расчета на экране. 4) Проведите расчеты при 3-х разных наборах значений параметров. ## Решение Модуль-реализация M1 ```py from numpy import median, mean def func1(SPS, KL): return sorted(SPS, reverse=KL) def func2(data): return median(data), mean(data) ``` Модуль-реализация M2 ```py from numpy.random import normal from math import sqrt from pylab import plot, show import M1 print('Введите параметры выборки случайной велечины') n = int(input('Введите число элементов: ')) m = int(input('Введите мат ожидание: ')) d2 = int(input('Введите дисперсию: ')) data = normal(m, sqrt(d2), n) KL = int(input('Введите значение бинарного ключа: ')) orderedData = M1.func1(data, KL) me, mede = M1.func2(orderedData) with open('Res456.bin', 'wb') as file: data.tofile(file) me.tofile(file) mede.tofile(file) plot(data) show() ``` Модуль-проверка ```py import M2 from numpy import frombuffer, float64 with open('Res456.bin', 'rb') as file: data = file.read() decoded = frombuffer(data, dtype=float64) print(f'Оценка мат. ожидания {decoded[-2]}\nОценка медианы {decoded[-1]}') ```