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

50 строки
1.7 KiB
Python

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