Moin!
rnd = Math.round(Math.random()*max);
Hier wäre der Wertebereich [0..max], die Eckwerte eingeschlossen; allerdings würden die Werte 0 und max statistisch gesehen nur halb so oft vorkommen wie die Zwischenwerte. Durch deine Addition von 0.5 verschiebst du den Wertebereich auf [1..max] mit gleicher Wahrscheinlichkeit für alle Werte.
Das gilt, wenn Math.round() das Intervall von [i-0.5;i+0.5[ auf die Zahl i abbildet.
Zum Glück stimmt das für positive i auch immer (jedenfalls laut ECMA-262-Standard) - beim Runden erlebt man je nach Programmiersprache ja manchmal so seine Überraschungen, ich erinnere mich da nur an PHP-Rundungen.
Deshalb würde ich im Zweifel die Variante mit Math.floor() bevorzugen.
- Sven Rautenberg