3.3 KiB
Индивидуальное контрольное задание по теме 8
Бушманов А.С. А-01-23
Задание: Вариант 2
Из темы 7:
Разработайте функцию с 4 аргументами, создающую последовательность отсчетов случайного, нормально распределенного сигнала типа белого шума с заданными параметрами: математическое ожидание и дисперсия, число отсчетов (аргументы функции). Сигнал должен быть записан построчно, по 3 элемента в строке с разделителем - пробел в текстовый файл с заданным именем (4-й аргумент функции), а также возвращен в вызывающую программу в виде списка.
Из темы 8:
По указанному преподавателем варианту контрольного задания обратитесь к индивидуальному заданию с таким номером в теме 7, разработайте функцию, на ее основе создайте модуль. Создайте второй модуль, в котором должны быть инструкции для ввода/создания исходных данных для проверки работы функции, вызов функции и отображение полученных результатов.
Решение:
Модуль 1: modtask1.py
import random
import math
def shum(mu, var, n, filename):
sigma = math.sqrt(var)
data = []
f = open(filename, "w", encoding="utf-8")
for i in range(n):
x = random.gauss(mu, sigma)
data.append(x)
if (i + 1) % 3 == 0:
f.write(f"{data[i-2]} {data[i-1]} {data[i]}\n")
elif i == n - 1:
start = i - (i % 3)
f.write(" ".join(str(v) for v in data[start:]) + "\n")
f.close()
return data
Модуль 2: modtask0.py
import modtask1
mu = float(input("Введите мат. ожидание (mu): "))
var = float(input("Введите дисперсию (var): "))
n = int(input("Введите число отсчетов (n): "))
filename = input("Введите имя файла: ").strip()
s = modtask1.shum(mu, var, n, filename)
print("Готово! Список получен и записан в файл.")
print("Длина списка:", len(s))
print("Первые 10 значений:", s[:10])
Ответ:
import modtask0
Введите мат. ожидание (mu): 3
Введите дисперсию (var): 6
Введите число отсчетов (n): 6
Введите имя файла (например noise.txt): task1
Готово! Список получен и записан в файл.
Длина списка: 6
Первые 10 значений: [4.903428780465844, 0.587814428103369, 4.692004162944187, 1.7931553860723835, 5.797829782338331, 2.3303270038829353]
Файл txt:
4.903428780465844 0.587814428103369 4.692004162944187
1.7931553860723835 5.797829782338331 2.3303270038829353