|
|
# Пример запуска
|
|
|
import M0
|
|
|
import M1
|
|
|
import M2
|
|
|
if __name__ == "__main__":
|
|
|
print("=== M3_27: Анализ выборки с группировкой ===")
|
|
|
создать_тестовые_файлы()
|
|
|
print("Созданы тестовые файлы: выборка1_M3_27.bin и выборка2_M3_27.bin")
|
|
|
|
|
|
# Тестовый пример
|
|
|
тест_выборка = [1, 5, 3, 8, 2, 7, 4, 6]
|
|
|
min_idx, max_idx = функция1(тест_выборка)
|
|
|
средние = функция2(тест_выборка, 3)
|
|
|
print(f"Тестовая выборка: {тест_выборка}")
|
|
|
print(f"Min индекс: {min_idx}, Max индекс: {max_idx}")
|
|
|
print(f"Средние по группам: {средние}")
|
|
|
|
|
|
M0()# Модуль для создания тестовых данных
|
|
|
import pickle
|
|
|
import random
|
|
|
import numpy as np
|
|
|
|
|
|
|
|
|
def создать_тестовые_файлы():
|
|
|
"""
|
|
|
Создает два бинарных файла с тестовыми выборками для проверки программы
|
|
|
"""
|
|
|
|
|
|
# Первый файл - нормальное распределение
|
|
|
print("Создание первого тестового файла...")
|
|
|
данные1 = [random.gauss(50, 15) for _ in range(30)] # 30 элементов, μ=50, σ=15
|
|
|
with open('выборка1_M3_27.bin', 'wb') as f:
|
|
|
pickle.dump(данные1, f)
|
|
|
print(f"Файл 'выборка1_M3_27.bin' создан. Элементов: {len(данные1)}")
|
|
|
print(f"Диапазон значений: {min(данные1):.2f} - {max(данные1):.2f}")
|
|
|
|
|
|
# Второй файл - равномерное распределение
|
|
|
print("\nСоздание второго тестового файла...")
|
|
|
данные2 = [random.uniform(-10, 10) for _ in range(25)] # 25 элементов, от -10 до 10
|
|
|
with open('выборка2_M3_27.bin', 'wb') as f:
|
|
|
pickle.dump(данные2, f)
|
|
|
print(f"Файл 'выборка2_M3_27.bin' создан. Элементов: {len(данные2)}")
|
|
|
print(f"Диапазон значений: {min(данные2):.2f} - {max(данные2):.2f}")
|
|
|
|
|
|
# Третий файл - с явными min/max для демонстрации
|
|
|
print("\nСоздание демонстрационного файла...")
|
|
|
данные3 = [2, 8, 3, 1, 9, 4, 7, 5, 6] # Явные min=1, max=9
|
|
|
with open('демо_выборка_M3_27.bin', 'wb') as f:
|
|
|
pickle.dump(данные3, f)
|
|
|
print(f"Файл 'демо_выборка_M3_27.bin' создан. Элементов: {len(данные3)}")
|
|
|
print(f"Значения: {данные3}")
|
|
|
print(f"Min: {min(данные3)} (индекс {данные3.index(min(данные3))})")
|
|
|
print(f"Max: {max(данные3)} (индекс {данные3.index(max(данные3))})")
|
|
|
|
|
|
print("\n" + "=" * 50)
|
|
|
print("ТЕСТОВЫЕ ФАЙЛЫ СОЗДАНЫ:")
|
|
|
print("1. выборка1_M3_27.bin - 30 элементов (нормальное распределение)")
|
|
|
print("2. выборка2_M3_27.bin - 25 элементов (равномерное распределение)")
|
|
|
print("3. демо_выборка_M3_27.bin - 9 элементов (демонстрационный)")
|
|
|
print("=" * 50)
|
|
|
|
|
|
|
|
|
def показать_содержимое_файлов():
|
|
|
"""
|
|
|
Показывает содержимое созданных тестовых файлов
|
|
|
"""
|
|
|
файлы = ['выборка1_M3_27.bin', 'выборка2_M3_27.bin', 'демо_выборка_M3_27.bin']
|
|
|
|
|
|
for имя_файла in файлы:
|
|
|
try:
|
|
|
with open(имя_файла, 'rb') as f:
|
|
|
данные = pickle.load(f)
|
|
|
print(f"\n{имя_файла}:")
|
|
|
print(f" Элементов: {len(данные)}")
|
|
|
print(f" Min: {min(данные):.3f}, Max: {max(данные):.3f}")
|
|
|
print(f" Первые 5 элементов: {[f'{x:.3f}' for x in данные[:5]]}")
|
|
|
except FileNotFoundError:
|
|
|
print(f"\nФайл {имя_файла} не найден. Сначала создайте тестовые данные.")
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
print("СОЗДАНИЕ ТЕСТОВЫХ ДАННЫХ ДЛЯ M3_27")
|
|
|
print("=" * 40)
|
|
|
|
|
|
создать_тестовые_файлы()
|
|
|
|
|
|
print("\nСОДЕРЖИМОЕ СОЗДАННЫХ ФАЙЛОВ:")
|
|
|
показать_содержимое_файлов()
|
|
|
|
|
|
print("\nИнструкция по запуску:")
|
|
|
print("1. Запустите M0.py для выполнения основной программы")
|
|
|
print("2. При запросе введите имя одного из созданных файлов")
|
|
|
print("3. Рекомендуется начать с 'демо_выборка_M3_27.bin' для демонстрации") |