Hvordan finne den Mode i en rekke tall i Perl

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