форкнуто от main/python-labs
Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
39 строки
1.4 KiB
Python
39 строки
1.4 KiB
Python
def calculate_histogram(data, num_bins):
|
|
"""
|
|
Расчет гистограммы для выборки данных
|
|
data - выборка случайной величины
|
|
num_bins - число интервалов разбиения
|
|
возвращает список с количеством элементов в каждом интервале
|
|
"""
|
|
if not data:
|
|
return [0] * num_bins
|
|
|
|
min_val = min(data)
|
|
max_val = max(data)
|
|
bin_width = (max_val - min_val) / num_bins
|
|
|
|
histogram = [0] * num_bins
|
|
|
|
for value in data:
|
|
if value == max_val:
|
|
bin_index = num_bins - 1
|
|
else:
|
|
bin_index = int((value - min_val) / bin_width)
|
|
if 0 <= bin_index < num_bins:
|
|
histogram[bin_index] += 1
|
|
|
|
print("\nГистограмма:")
|
|
print("Интервал\t\tКоличество")
|
|
for i in range(num_bins):
|
|
lower_bound = min_val + i * bin_width
|
|
upper_bound = min_val + (i + 1) * bin_width
|
|
print(f"{lower_bound:.2f} - {upper_bound:.2f}\t\t{histogram[i]}")
|
|
|
|
return histogram
|
|
|
|
num_bins = int(input("Введите количество интервалов разбиения: "))
|
|
|
|
data = [1.2, 2.5, 3.1, 4.8, 5.2, 6.7, 7.3, 8.9, 9.1, 10.5,
|
|
2.1, 3.8, 4.2, 5.9, 6.3, 7.8, 8.2, 9.7]
|
|
|
|
result = calculate_histogram(data, num_bins) |