sclass RollingAverage { int windowSize = 50; int recalcEvery = 1000; // to counter floating point errors new LinkedList<Double> list; double sum; int n; *() {} *(int *windowSize) {} synchronized void add(double d) { if (++n >= recalcEvery) { n = 0; sum = doubleSum(list); } if (l(list) >= windowSize) sum -= popFirst(list); list.add(d); sum += d; } synchronized double get() { ret doubleRatio(sum, l(list)); } }
Began life as a copy of #1019129
download show line numbers debug dex old transpilations
Travelled to 6 computer(s): bhatertpkbcr, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tvejysmllsmz, vouqrxazstgt
No comments. add comment
| Snippet ID: | #1024553 |
| Snippet name: | RollingAverage (memory-hungry version with LinkedList) |
| Eternal ID of this version: | #1024553/2 |
| Text MD5: | 586f1e96687414e98d1be422649095a1 |
| Author: | stefan |
| Category: | javax / maths |
| Type: | JavaX fragment (include) |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2021-12-26 22:25:55 |
| Source code size: | 522 bytes / 27 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 435 / 464 |
| Version history: | 1 change(s) |
| Referenced in: | [show references] |