Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- import math
- a = float(input("Введите a: "))
- b = float(input("Введите b: "))
- N = int(input("Введите N: "))
- randomNumbers = []
- summSc = 0
- summ2 = 0
- k = math.ceil(1 + 3.322 * math.log10(N))
- print("k:", k)
- def load_table_values(file_path):
- table_values = []
- with open(file_path, 'r') as file:
- for line in file:
- table_values.append(float(line.strip()))
- return table_values
- tableValues = load_table_values("table_values.txt")
- for i in range(N):
- randomNumber = round(a + (b - a) * random.random(), 3)
- randomNumbers.append(randomNumber)
- summSc += randomNumber
- summ2 += math.pow(randomNumber, 2)
- print(randomNumbers)
- math_avg = (a + b) / 2
- d = math.pow(b - a, 2) / 12
- print("Математическое ожидание:", math_avg)
- print("Дисперсия:", d)
- print("Расчетное математическое ожидание:", round(summSc / N, 3))
- print("Расчетная дисперсия:", round((summ2 - N * math.pow(summSc / N, 2)) / (N - 1), 5)) #Дисперсия = ∑ X^2 - N ( ∑ X/N)^2/N - 1
- randomNumbers.sort()
- print("Отсортированные числа:")
- for num in randomNumbers:
- print(num)
- intervalCounts = [0] * k
- range_ = b - a
- intervalSize = range_ / k
- intervalBounds = [a + i * intervalSize for i in range(k + 1)]
- for randomNumber in randomNumbers:
- for j in range(k):
- if intervalBounds[j] <= randomNumber < intervalBounds[j + 1]:
- intervalCounts[j] += 1
- break
- for i in range(k):
- print("Интервал", i, ":", intervalCounts[i])
- x = 0
- for i in range(k):
- x += math.pow(intervalCounts[i] - N / k, 2) / (N / k)
- print("x:", round(x, 3))
- print("Табличное значение x^2:", tableValues[k - 1])
- if x < tableValues[k - 1]:
- print("Гипотеза о согласованности распределений верна")
- c = "Гипотеза о согласованности распределений верна"
- else:
- print("Гипотеза о согласованности распределений отвергается")
- c = "Гипотеза о согласованности распределений отвергается"
- values = f"""n = {N}
- a = {a}
- b = {b}
- Теоретическое математическое ожидание= {math_avg}
- Расчетное математическое ожидание= {round(summSc / N, 3)}
- Теоретическая дисперсия= {d}
- Расчетная дисперсия= {round((summ2 - N * math.pow(summSc / N, 2)) / (N - 1), 5)}
- Расчетное X^2= {round(x, 3)}
- Теоретическое X^2= {tableValues[k - 1]}
- Вывод = {c}"""
- file_path = "text.txt"
- with open(file_path, "w") as file:
- for value in randomNumbers:
- file.write(str(value) + "\n")
- file.write(values)
Add Comment
Please, Sign In to add comment