Gunnar Bittersmann: Stack Overflow at line XYZ

Beitrag lesen

Hello out there!

Besser:
        var wuerfel = Math.floor(Math.random() * 6);
        array[wuerfel] = '';

Damit bekommst du ja ne 0.

Ja, natürlich. Die hattest du mit Math.ceil(Math.random() * 6) - 1 auch bekommen. Ist ja auch der Index; und in array[0] steht was? '1'.

Der Unterschied ist: Bei meiner Variante
  0 ≤ Math.random() < 1
  0 ≤ Math.random() * 6 < 6
  0 ≤ Math.floor(Math.random() * 6) ≤ 5
'1' ≤ array[Math.floor(Math.random() * 6)] ≤ '6'

bei deiner hingegen
  0 ≤ Math.random() < 1
  0 ≤ Math.random() * 6 < 6
  0 ≤ Math.ceil(Math.random() * 6) ≤ 6
 -1 ≤ Math.ceil(Math.random() * 6) - 1 ≤ 5

Laufzeitfehler bei Zugriff auf array[-1]

Damit bekommst du ja ne 0. Und das ist sehr wahrscheinlich (0..0,499999).

Nein, das wäre der Fall bei Math.round. Nicht aber bei Math.floor, was genau wie Math.ceil eine Gleichverteilung ergibt; nur halt keinen (unwahrscheinlichen, aber möglichen) Laufzeitfehler.

See ya up the road,
Gunnar

--
“Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)