Gast hat gesagt.:
Inwiefern ist z.B Math.random()*20 schlechter zur Erstellung einer Zufallszahl ?
1) Math.random() legt sich beim ersten aufruf ein statisches Random-Objekt an, und bei allen darauffolgenden aufrufen fragt er jedes mal wie bescheuert
"if(randomNumberGenerator!=null){..." ab, obwohl es offensichtlich immer wahr ist. => Für die dämliche unnötige herumfragerei geht Zeit verloren.
2) Math.random() rechnet mit double. Einen gleichverteilten double herzustellen ist irgendwie voll die Kunst, wenn man denormalisierte Zahlen korrekt behandeln möchte usw. double ist auch noch 2x so breit wie ein int rein von bytes her
=> unnötiger aufwand für nichts
3) Math.random() rechnet nicht nur mit doubles, es gibt ja auch noch eines Zurück. Das anschließend wieder in Integer zu kasten ist bescheuert. => Umsonst gemachte Arbeit wird weggeworfen
4) Zwischendurch musst du noch mit 20 multiplizieren. Diese eine Multiplikation ist eine Multiplikation zuviel.
=> unnötige Arbeit
5) Das Debuggen wird geringfügig durch den Umstand erschwert, dass du bei Math.random() nicht ohne reflection den Seed auf irgendeinen festen Wert setzen kannst. D.h. es sind erstmal 10 Minuten Reflection-krämpfe nötig, um das Programm zu testzwecken deterministisch ablaufen zu lassen, um etwa selten auftretende Fehler aufzuspüren.
=> WHAAAAAA :autsch:
Benutzt Random!