Hvordan finne den Mode i en rekke tall i Perl
Når du har en rekke tall i Perl, kan du bruke kartfunksjonen for å lage en hash som består av hver unike nummer og dens teller. Når du sortere hasj i synkende rekkefølge, er det første elementet modus. Men siden det kan være mer enn en modus, må man fortsette å lete etter etterfølgende elementer i den sorterte hash som har den samme teller som det første elementet.
Bruksanvisning
1 Start en tekst editor eller Notisblokk, og skape en ny Perl-skript. For eksempel skriver følgende som første linje i filen:
! / usr / bin / perl
2 Erklærer tre variabler - matrisen som du ønsker å beregne modus, en hash å lagre telling av hver unike nummer og en skalar verdi av modus teller. For eksempel inn:
min @array;
Nummeret mitt;
min $ teller;
3 Legge til numre på rekke og sette modusen teller til null, som ikke er en gyldig teller for en modus. For eksempel inn:
@array = (7,1,5,9,11,7,3,3,5,7,9,3,8);
$ Count = 0;
4 Lag en hash hvor tastene er unike tall i rekken og verdiene er antall forekomster av hver tast ved å kartlegge array til en hash og økes verdien hver gang en tast blir lagt til hasj. For eksempel inn:
kart {$ nummer {$ _} ++} @array;
5 Sorter hash i synkende rekkefølge basert på antall forekomster slik at nøkkelen med flest hendelser, eller modus, er det første elementet. Loop gjennom sorterte hash å finne modusen. For eksempel inn:
for $ i (sort {$ nummer {$ b} <=> $ nummer {$ a}} nøkler% tall) {
6 Skriv ut antall ganger modus vises i datasettet første gang gjennom bare løkken. For eksempel inn:
print hvis $ count == 0 "Modusen vises $ nummer {$ i} ganger i datasettet. \ n";
7 Fang telling av modus første gang du passerer gjennom løkken ved å sjekke om den modusen teller er null. For eksempel inn:
$ Count = ($ count == 0)? $ Nummer {$ i}: $ teller;
8 Skriv ut verdien av modusen for hver modus i datasettet hvis antallet er det samme som den modus teller. For eksempel inn:
print "modus er $ i \ n" hvis $ nummer {$ i} == $ teller;
}
9 Lagre skriptet og tildele et filnavn, slik som «mode.pl." Kjør skriptet og sjekke at resultatet er riktig. For eksempel, skriptet fra de foregående trinnene gir følgende resultat:
Modusen vises 3 ganger i datasettet
modus er tre
modus er 7