Averages/Arithmetic mean: Difference between revisions
Content added Content deleted
m (Spelling/grammar/aesthetics) |
(Add perl version.) |
||
Line 41: | Line 41: | ||
System.out.println("The mean is: " + ((nums.length != 0) ? (sum / nums.length) : 0)); |
System.out.println("The mean is: " + ((nums.length != 0) ? (sum / nums.length) : 0)); |
||
... |
... |
||
=={{header|Perl}}== |
|||
sub avg(@_) { |
|||
$count = 0; |
|||
$sum = 0; |
|||
foreach (@_) { |
|||
$sum += $_; |
|||
$count++; |
|||
} |
|||
return $count > 0 ? $sum / $count : 0; |
|||
} |
|||
print avg(qw(3 1 4 1 5 9))."\n"; |
|||
Output: |
|||
3.83333333333333 |
|||
With module Data::Average. |
|||
(For zero-length array returns ().) |
|||
use Data::Average; |
|||
my $d = Data::Average->new; |
|||
$d->add($_) foreach (qw(3 1 4 1 5 9)); |
|||
print $d->avg."\n" |
|||
Output: |
|||
3.83333333333333 |
Revision as of 23:59, 21 January 2008
![Task](http://static.miraheze.org/rosettacodewiki/thumb/b/ba/Rcode-button-task-crushed.png/64px-Rcode-button-task-crushed.png)
You are encouraged to solve this task according to the task description, using any language you may know.
Write a program to find the mean (arithmetic average) of a numeric vector. The program should work on a zero-length vector (with an answer of 0).
J
mean=: +/ % #
That is, sum divided by the number of items. The verb also works on higher-ranked arrays. For example:
mean 3 1 4 1 5 9 3.83333 mean $0 NB. $0 is a zero-length vector 0 x=: 20 4 ?@$ 0 NB. a 20-by-4 table of random (0,1) numbers mean x 0.58243 0.402948 0.477066 0.511155
The computation can also be written as a loop. It is shown here for comparison only and is highly non-preferred compared to the version above.
mean1=: 3 : 0 z=. 0 for_i. i.#y do. z=. z+i{y end. z % #y ) mean1 3 1 4 1 5 9 3.83333 mean1 $0 0 mean1 x 0.58243 0.402948 0.477066 0.511155
Java
Assume the numbers are in a double array called "nums".
... double mean = 0; double sum = 0; for(double i : nums){ sum += i; } System.out.println("The mean is: " + ((nums.length != 0) ? (sum / nums.length) : 0)); ...
Perl
sub avg(@_) { $count = 0; $sum = 0; foreach (@_) { $sum += $_; $count++; } return $count > 0 ? $sum / $count : 0; } print avg(qw(3 1 4 1 5 9))."\n";
Output:
3.83333333333333
With module Data::Average. (For zero-length array returns ().)
use Data::Average; my $d = Data::Average->new; $d->add($_) foreach (qw(3 1 4 1 5 9)); print $d->avg."\n"
Output:
3.83333333333333