PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mittelwert berechnen mit Ruby



amroth
18.10.2006, 20:40
Moin, Moin!

Ich habe vor kurzem angefangen mich mit der Programmiersprache Ruby zu beschäftigen.
Habe schon ein paar kleinere "Progrämmchen" zusammengebastelt, umm mich ein bisschen einzugewöhnen...

Jetz bin ich aber auf ein Problem gestoßen, das ich bis jetzt selber nicht lösen konnte!

Und zwar möchte ich den Durschnitt, also den Mittelwert, einer bestimmten Menge von Zahlen berechnen (lassen).

Wie mache ich das mit Ruby?

Ich würde mich freuen, wenn mir das jmd. erklären könnte!


P.S.: Falls das in diesem Forum schon mal erklärt wurde, dann entschuldige ich mich und bitte um den Link
P.P.S.: Suchfunktion = kein Ergebnis

satisfied
18.10.2006, 21:17
Grundsätzlich würde ich die Zahlen in einen Array oder List packen. Diesen dann mit einer for-Schleife durchlaufen, dabei die Summe der Zahlen in einer Variable aufrechnen und die Anzahl in einer anderen Variable inkrementieren. Und nach Verlassen der for-Schleife: Mittelwert = Summe/Anzahl

Leider keine Erfahrung mit Ruby Syntax ;-)

Also etwa so:

arr = [Zahl1, Zahl2, Zahl3, ... , Zahln]
count = 0
summe = 0
for x in arr
count += 1
summe += x
end
print summe/count

http://www.ruby-doc.org/docs/ruby-doc-bundle/Manual/man-1.4/syntax.html

schorsch312
18.10.2006, 21:38
Du kannst auch durch length(array) teilen, dann sparst du dir den einen Counter.
Gruß, Georg

Mµ*e^13.5_?¿
18.10.2006, 21:43
Und man kann iterators benutzen, dann brauch man die Schleife nicht.


array = [1, 2, 3, 4, 5, 6]
summe = 0
array.each do |x| summe += x end
puts summe/array.length

(ok, ist auch nicht wirklich kürzer)

satisfied
18.10.2006, 21:50
Du kannst auch durch length(array) teilen, dann sparst du dir den einen Counter.
Gruß, Georg
Stimmt, in Python gibt es noch die sum() Funktion für Arrays. Es würde also reichen zu schreiben: mittelwert = sum(arr)/len(arr).

Gibts die Summenfunktion für arrays in Ruby auch (standardmäßig)? Soweit ich aus der ruby-doc erkennen kann, nicht.

satisfied
18.10.2006, 21:53
Und man kann iterators benutzen, dann brauch man die Schleife nicht.


array = [1, 2, 3, 4, 5, 6]
summe = 0
array.each do |x| summe += x end
puts summe/array.length

(ok, ist auch nicht wirklich kürzer)
Mal abgesehendavon, daß der Code nicht wesentlich kürzer ist, leidet mE auch die Lesbarkeit.

Gruß