import os import M1 import matplotlib.pyplot as plt def read_sample(filename): data = [] with open(filename, "r", encoding="utf-8") as f: for line in f: for t in line.split(): data.append(float(t)) return data def run(): while True: fname = input("Введите имя файла с выборкой: ").strip() if os.path.exists(fname): break print("Файл не найден. Попробуйте ещё раз.") sample = read_sample(fname) print("Размер выборки:", len(sample)) m = int(input("Введите число интервалов m: ")) mn, mx, razmah, s, ratio = M1.stats(sample) borders, counts = M1.intervals(sample, m) print("\n--- Статистики ---") print("min =", mn) print("max =", mx) print("размах =", razmah) print("std =", s) print("размах/std =", ratio) print("\n--- Интервалы ---") for i in range(m): left = borders[i] right = borders[i+1] print(f"[{left}; {right}) -> {counts[i]}" if i < m-1 else f"[{left}; {right}] -> {counts[i]}") labels = [] for i in range(m): a = borders[i] b = borders[i+1] if i < m-1: labels.append(f"[{a:.2f};{b:.2f})") else: labels.append(f"[{a:.2f};{b:.2f}]") plt.bar(labels, counts) plt.xticks(rotation=45, ha="right") plt.title("Распределение элементов по интервалам") plt.xlabel("Интервалы") plt.ylabel("Число элементов") plt.tight_layout() plt.show() return mn, mx, razmah, s, ratio, borders, counts