偏差値の出し方
perl ならこう。
#!/usr/local/bin/perl # 1000人の偏差値を出すサンプル use strict; use warnings; # 0〜100 点の点数を 1000 人分、ランダムで生成 my @scores = map { int( rand(101) ) } (1 .. 1000); my $avg = average(@scores); my $standard_score = sqrt ( calc_variance($avg, \@scores) ); for my $score (@scores) { # standard_socre が 0 なら、偏差値は全員 50 とする my $hensachi = $standard_score ? ( ($score - $avg) * 10 / $standard_score ) + 50 : 50; print "$score: $hensachi \n"; } sub calc_variance { my ($avg, $scores_ref) = @_; my $variance; my $score_num = scalar( @$scores_ref ) or return 0; for my $score ( @$scores_ref ) { $variance += ( $score - $avg ) ** 2; } return $variance / $score_num ; } sub average { my $sum; $sum += $_ for (@_); return $sum / scalar @_; }