Mittelwert berechnen mit Ruby

A

amroth

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
 
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:
Code:
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
 
Zuletzt bearbeitet:
Du kannst auch durch length(array) teilen, dann sparst du dir den einen Counter.
Gruß, Georg
 
Und man kann iterators benutzen, dann brauch man die Schleife nicht.

Code:
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)
 
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.
 
Und man kann iterators benutzen, dann brauch man die Schleife nicht.

Code:
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ß
 
Zurück
Oben