Sollte ich die 1 in 2 ^ 62 Möglichkeit in Betracht ziehen, die ausgeschlossene Obergrenze zu erhalten, wenn 'Math.random ()' verwendet wird?

8

Von MDN ( Ссылка ):

  

Math.random

     

Gibt eine Fließkomma-Pseudozufallszahl im Bereich [0, 1) zurück   dh von 0 (einschließlich) bis einschließlich 1 (exklusiv),   die Sie dann auf Ihren gewünschten Bereich skalieren können.

Aber dann heißt es:

  

Beachten Sie, dass Zahlen in JavaScript IEEE 754 Fließkommazahlen sind   bei einem Rund-zu-nächsten-gleichmäßigen Verhalten, diese Bereiche, mit Ausnahme des einen   für Math.random() selbst, sind nicht genau und abhängig von den Grenzen   es ist in extrem seltenen Fällen möglich (in der Größenordnung von 1 in 2 ^ 62)   berechne die normalerweise ausgeschlossene obere Grenze.

Sollte ich diese Fälle in Betracht ziehen? Verwenden Sie beispielsweise ...

%Vor%

... statt ...

%Vor%

...?

    
Oriol 26.05.2013, 00:57
quelle

2 Antworten

6

Wenn Sie Math.random () eine Milliarde Mal pro Sekunde aufgerufen haben, sollten Sie erwarten, dass dieser Fehler alle 150 Jahre oder so auftritt. Und ich gebe Javascript Weg zu viel Kredit für die Leistung. : -)

    
Lee Daniel Crocker 26.05.2013, 03:01
quelle
2

Nein. Bevorzugung von Klarheit und Einfachheit gegenüber "Korrektheit" und bizarren Randfällen. Dieser komplexere Code kann dazu führen, dass ein schlechter Entwickler (oder vielleicht der zukünftige Sie) diesen Code beibehält. Die Wahrscheinlichkeit dafür ist größer als die 1 in 2 ^ 62 Chance von Math.random () funktioniert nicht wie erwartet.

    
Mike Grassotti 26.05.2013 02:55
quelle

Tags und Links