_.map( randRange(1000, 16000, randRange(3, 7)), function( n ) { var x = n / 1000; var precision = randRange(1, 2); return [roundTo(precision, x), precision]; }) sum($.map(VALUES, function(pair) { return round(pair[0]); })) randFromArray([ ["jogging", "ran", new Plural(function(n) { return $.ngettext("mile", "miles", n); })], ["riding a bicycle", "traveled", new Plural(function(n) { return $.ngettext("mile", "miles", n); })], ["collecting mushrooms", "collected", new Plural(function(n) { return $.ngettext("pound", "pounds", n); })], ["painting a roof", "painted", new Plural(function(n) { return $.ngettext("square foot", "square feet", n); })], ["harvesting grain", "harvested", new Plural(function(n) { return $.ngettext("tonne", "tonnes", n); })] ]) 0 (function() { var sum = 0; $.each(VALUES, function(i, pair) { sum += roundTo(pair[1], pair[0]); }); return roundTo(2, sum); })()

person(1) has been TYPES[0] every day for the last `VALUES.length` days. The table below shows the amount he TYPES[1] in plural_form(TYPES[2]) each day. The table below shows the amount she TYPES[1] in plural_form(TYPES[2]) each day.

Estimate how much he TYPES[1] in total by first rounding each amount to the nearest whole number and then summing all the rounded amounts.

Estimate how much she TYPES[1] in total by first rounding each amount to the nearest whole number and then summing all the rounded amounts.

Note that if you sum the exact amounts (`localeToFixed(SUM, 2)`) and then round, you'll get `round(SUM)`. For fun, pay attention to how this number compares with your estimate.

Day
" " Amount
(in plural_form(TYPES[2]))
i+1 localeToFixed(pair[0], pair[1])

ANSWER plural_form(TYPES[2], ANSWER)

Round all the numbers to the nearest plural_form(TYPES[2], 1) and add them up.

Day Amount Rounded Running total
i+1 localeToFixed(pair[0], pair[1]) round(pair[0]) ACC += round(pair[0])

Therefore the estimate is `ANSWER` plural_form(TYPES[2], ANSWER).