文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>这个统计方法比较巧妙--记录下来

这个统计方法比较巧妙--记录下来

时间:2006-10-20  来源:yszll

#!/usr/bin/perl
# Fig. 5.6: fig05_06.pl
# Using foreach loops with hashes.

@opinions = qw( what word is being used most in this array is
                what this is used what most is is array what
                word used is most is array what is this is array
                what is is array this is most );

foreach ( @opinions ) {
   ++$hash{ $_ };
}

# display sorted by key in ascending order
print "Word\tFrequency\n";
print "----\t---------\n";

foreach ( sort keys( %hash ) ) {
   print "$_\t", "*" x $hash{ $_ }, "\n";
}

# display sorted by frequency in descending order
print "\nWord\tFrequency\n";
print "----\t---------\n";

foreach ( sort { $hash{ $b } <=> $hash{ $a } } keys( %hash ) ) {
   print "$_\t", "*" x $hash{ $_ }, "\n";
}

---------------------------------
输出如下:
Word    Frequency
----    ---------
array   *****
being   *
in      *
is      ************
most    ****
this    ****
used    ***
what    ******
word    **

Word    Frequency
----    ---------
is      ************
what    ******
array   *****
most    ****
this    ****
used    ***
word    **
being   *
in      *

下面这个程序和上面这个用法一样.

#!/usr/bin/perl
# Fig. 5.5: fig05_05.pl
# Survey data analysis: Determining the mean, median and mode.

@opinions = ( 8, 9, 4, 7, 8, 5, 6, 4, 9, 9,
              7, 8, 9, 5, 4, 8, 7, 8, 7, 7,
              6, 6, 8, 9, 1, 9, 8, 7, 8, 7,
              7, 8, 9, 8, 9, 4, 9, 6, 8, 4,
              6, 7, 3, 4, 8, 7, 9, 8, 9, 2  );

# determine the mean
$total = 0;

foreach ( @opinions ) {
   $total += $_;
}

$mean = $total / @opinions;
print "Survey mean result:   $mean\n";

# determine the median
@sorted = sort { $a <=> $b } @opinions;
$middle = @sorted / 2;    # middle element subscript

# for an even number of elements, average the two middle
# elements to determine the median; otherwise, use the
# middle element
if ( @sorted %2 == 0 ) {  # even number of elements
   $median =
      ( $sorted[ $middle - 1 ] + $sorted[ $middle ] ) / 2;
}
else {                    # odd number of elements
   $median = $sorted[ $middle ];
}

print "Survey median result: $median\n";

# determine the mode
$mode = 0;

foreach ( @opinions ) {
   ++$frequency[ $_ ];     # increment the frequency counter
  
   # if the current frequency is greater than the $mode's
   # frequency, change $mode to $_
   if ( $frequency[ $_ ] > $frequency[ $mode ] ) {
      $mode = $_;
   }
}

print "Survey mode result:   $mode\n\n";

# display a frequency graph
print "Response\tFrequency\n";
print "--------\t---------\n";

foreach ( 1 .. 9 ) {
   print "$_\t\t", "*" x $frequency[ $_ ], "\n";
}

---------------------------------------------------------------------
输出如下:
Survey mean result: 6.86
Survey median result: 7
Survey mode result:   8

Response        Frequency
--------        ---------
1               *
2               *
3               *
4               ******
5               **
6               *****
7               **********
8               *************
9               ***********

--------------------------------------------------------------------------

摘自: perl编程金典
相关阅读 更多 +
排行榜 更多 +
零界之痕手游安卓下载

零界之痕手游安卓下载

角色扮演 下载
漫游都市手机版下载

漫游都市手机版下载

赛车竞速 下载
涡轮螺旋桨飞行模拟器无限金币版下载

涡轮螺旋桨飞行模拟器无限金币版下载

模拟经营 下载