异星工厂的一点数学疑问
本帖最后由 大秦男女 于 2021-9-26 14:07 编辑最近在玩这个 想算出平均每车火车运力扣掉消耗后能实际为站前箱子存货增加的值 从而确定要派出多少火车
这种所谓"平均数" 有办法计算吗?
比如有 3 6 9 三个数 每次加一个 最后算平均数
平均数计算是 (3+6+9)/3 = 6
把6存到A里面 现在再加了一个15
要怎么算出8.25?
你问我为什么不直接算 (3+6+9+15)/4=8.25
因为那个寄存器A是int的多算几次可能会溢出!
还有 这东西的运算器只有整数运算 小数会被忽略...ORZ
结果也不用非常精确 但是也不能偏差太大
我都不搞那么精细的计算,直接把所有供货箱子堆爆就完事了,货物溢出就溢出了,流出一点缓冲余量也不是坏事 本帖最后由 CielChloe 于 2021-9-26 16:30 编辑
大概看懂了你的意思,你希望维护一个动态均值的话,是否可以用个近似算法?
比如记录均值的10^p倍为m,累加的新值为xi,每次计算新m : (m*t+xi*10^p) / (t+1),该式全是INT,注意t和p别太大即可
p值为精度,类似结果保留p位小数,举个例子,p=3, m=15324,那么实际均值为15.324
t值>=1,可根据需求调节,越大越稳定,越小越敏感
如果你就是要精确算这个均值,在只有INT型数据的前提下,那你就得用若干位值来记录
比如s1=500, s2 = 343,表示实际总和s = 500343
页:
[1]