import random
import math
group_heating_index_value = []
suijishu = []
ut_value = [1.284543, 1.863815]
sub_temperature_value = []
temperature_value = []
times = 10000
group = 60
def _max(temp_list):
factor = 18.0
for j in range(len(temp_list)):
temp = factor - temp_list[j]
if temp >= 0:
temp_list[j] = temp
else:
temp_list[j] = 0
return temp_list
def zhubu(group, times):
for t in range(times):
for i in range(group):
z1 = random.gauss(0, 1)
suijishu.append(z1)
if (i - 1) < 0:
xgm1 = 0
else:
xgm1 = suijishu[i - 1]
if (i - 2) < 0:
xgm2 = 0
else:
xgm2 = suijishu[i - 2]
ut = 1.432788 * xgm1 - 0.4505976 * xgm2 - 0.6001734 * ut_value[i + 1] - 0.2699453 * ut_value[i] + suijishu[i]
ut_value.append(ut)
T = 4.912044 - 20.2049 * math.sin((2 * math.pi / 365) * (4016 + i)) - 4.427545 * math.cos(
(2 * math.pi / 365) * (4016 + i)) + ut
temperature_value.append(T)
sub_temperature_value = _max(temperature_value)
heating_index = sum(sub_temperature_value)
group_heating_index_value.append(heating_index)
suijishu.clear()
temperature_value.clear()
zhubu(group, times)
print(group_heating_index_value, "\n")
print(sum(group_heating_index_value)/times)