Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   [Perl] Standaarddeviatie berekenen (https://forum.scholieren.com/showthread.php?t=1292851)

zuster 28-10-2005 15:13

[Perl] Standaarddeviatie berekenen
 
Hoi,

Ik moet voor school een programma schrijven dat de gemiddelde woordlengte en de stadaarddeviatie van een tekstbestand berekent. Het gemiddelde berekenen kan ik wel, maar hoe laat ik Perl de standaarddeviatie berekenen? Welke formule heb ik daarvoor nodig?

Alvast bedankt

dafelix 28-10-2005 15:19

Citaat:

1e hit op google zegt:

Om de standaarddeviatie (van een populatie) te berekenen neem je de volgende stappen:

* Bereken het gemiddelde.
* Neem van elk getal de afstand tot het gemiddelde
* Neem het kwadraat van die afstanden.
* Bereken het gemiddelde van die kwadraten.
* Neem de wortel van de uitkomst

wss kun je 't zelf wel toepassen op je tekstbestand

dragonstorm 28-10-2005 19:32

Perl is gaaf!
Ik neem aan dat je weet wat standaardafwijking is en hoe dit te berekenen.

De truc is dit:
-Het bestand in array laden.
Code:

open(BESTAND, "./bestand.txt");
while($line = <BESTAND>); # leest 1 lijn in
@lijn = split(/ /, $line);
push(@bestand, @lijn);

-de een array maken met de lengtes van ieder element in de @bestand array.
while(@bestand) {
$var = length(pop(@bestand));
push(@array, $var);
-Het gemiddelde van die array berekenen. Dat doe je met iets als dit:
Code:

$aantal = @array;
$i = 0;
while($array[i]) {
$totaal += $array[i];
$i++;
}
$gemiddelde = $totaal/$aantal;

-daarna maak je een array met de kwadraatwaardes van de afwijking van het gemiddelde, in deze trant:
Code:

$i = 0;
while ($array[i]) {
$var = ($gemiddelde - $array[i]) ** 2;
push (@baai, $var);
$i++;
}

-daarna bereken je het gemiddelde van de @baai array, zoals je dat met de @array hebt gedaan.
-daarna bereken je de wortel hier van. Dit doe je met de sqrt functie.
Code:

$stda = sqrt($nieuw_gemiddelde);
print "$stda\n";

het is een tijdje geleden dat ik perl heb gedaan, dus als er grove fouten in zitten spijt me dat :) verbeter waar noodzakelijk.
EDIT: dit zou moeten werken.

Manuzhai 30-10-2005 01:27

Ik wil altijd mijn ogen uitrukken van Perl. :|

eddie 30-10-2005 09:52

Citaat:

Manuzhai schreef op 30-10-2005 @ 02:27 :
Ik wil altijd mijn ogen uitrukken van Perl. :|
nee, PHP is zo goed :rolleyes:

/flame

dragonstorm 30-10-2005 09:53

vind je dat niet prachtig, dan?

Nou ja, ik ben dan ook een Lispnik, en in alle eerlijkheid zijn veel andere talen mooier dan dit (in het bijzonder scheme en clisp). Maar het is wel heel _krachtig_, veel krachtiger voor dit soort functies dan c/c++/java/C#. Hell, voor dit beperkte nut, zelfs krachtiger dan LISP.

LISP wint echter weer op heel andere vlakken, en imho is dat (en de leesbaarheid ervan) belangrijker. Maar je kunt niet ontkennen dat perl hier mooi werk deed :)

Manuzhai 30-10-2005 12:40

Citaat:

eddie schreef op 30-10-2005 @ 10:52 :
nee, PHP is zo goed :rolleyes:

/flame

Nee, PHP is ook kut, maar zelfs de syntax van PHP nodigt minder uit tot obfuscatie dan die van Perl. Ik werk met Python these days, da's pas clean.


Alle tijden zijn GMT +1. Het is nu 18:11.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.