假设此阵列是过去28天内每天获得的俯卧撑次数:
[
20,20,20,30,30,30,30,
35,35,40,40,40,45,45,
50,50,50,50,50,50,50,
60,70,80,90,100,110,120
]
如您所见,上周呈急剧上升趋势,这是我最感兴趣的数据。过去越远,我希望该数据在“平均值”中的作用就越小的次数。
为此,我想制定一个“平均”,其中每个星期都比前一周更有价值。
背景信息,不是此问题的一部分。
正常平均值:
所有值的总和/数量
对于以上:
1440/28 = 51.42857142857143
加权平均:
将阵列分成7组的4组,然后启动一个新阵列。
- 将第一个组添加到数组。
- 将第二组添加到阵列两次。
- 将第三组添加到数组三次。
- 将第四组添加到阵列四次。
由长度总结所有的新阵列的,和除法新阵列。
对于以上:
将数组转换为此:
[
20,20,20,30,30,30,30, # first week once
35,35,40,40,40,45,45,
35,35,40,40,40,45,45, # second week twice
50,50,50,50,50,50,50,
50,50,50,50,50,50,50,
50,50,50,50,50,50,50, # third week thrice
60,70,80,90,100,110,120,
60,70,80,90,100,110,120,
60,70,80,90,100,110,120,
60,70,80,90,100,110,120 # Fourth week four times
]
然后在该阵列上运行正常平均值。
4310/70 = 61.57142857142857
请注意,由于上周呈上升趋势,因此高于正常平均值。
规则:
- 输入是由28个非负整数组成的平面数组。
- 您想使用的任何语言。
- 输出一个数字。
- 我一直喜欢看TIO链接。
- 尝试以最小的字节数解决问题。
- 结果应为精确到至少4个小数位的小数(从测试用例值中截断或四舍五入即可)或精确的分数。
测试用例:
案例1:上升趋势
[
20,20,20,30,30,30,30,
35,35,40,40,40,45,45,
50,50,50,50,50,50,50,
60,70,80,90,100,110,120
]
正常平均值:51.42857142857143加权平均值:61.57142857142857
案例2:放下平静
(我度过了糟糕的一周,但前一阵子)
[
50,50,50,50,50,50,50,
10,10,10,10,10,10,10,
50,50,50,50,50,50,50,
50,50,50,50,50,50,50
]
正常平均值:40加权平均值:42
情况3:放弃
我度过了糟糕的一周,这使我的平均成绩迅速下降。
[
50,50,50,50,50,50,50,
50,50,50,50,50,50,50,
50,50,50,50,50,50,50,
10,10,10,10,10,10,10
]
正常平均值:40加权平均值:34
情况4:平均
好的,所以我只是在这里玩耍,我认为它与正常平均值和加权平均值可能是相同的值,但是当然不是。
[
60,60,60,60,60,60,60,
30,30,30,30,30,30,30,
20,20,20,20,20,20,20,
15,15,15,15,15,15,15
]
正常平均值:31.25加权平均值:24.0
奖金问题:
28个值的哪种组合将具有相同的正常平均值和加权平均值?
打高尔夫球快乐!
new_avg = α*weekly_sum + (1-α)*old_avg
对一些α∈(0,1)
0
每天都做俯卧撑,因此我的加权平均数与正常平均数相同。