Zufälliges Fließkomma-Double im Inclusive-Bereich

Können wir leicht random floating-point-zahlen in einem gewünschten Bereich [X,Y) (beachten Sie, dass X ist inclusive und Y exklusiv), mit die unten aufgeführte Funktion, da Math.random() (und die meisten Pseudo-zufälligen Zahl-Generatoren, AFAIK) produzieren zahlen in [0,1):

function randomInRange(min, max) {
  return Math.random() * (max-min) + min;
}
//Notice that we can get "min" exactly but never "max".

Wie kann man eine zufällige Zahl in einem gewünschten Bereich inclusive an beiden Grenzen, also [X,Y]?

Ich nehme an, wir könnten die "Schrittweite" unser Wert von Math.random() (oder gleichwertig) von "Rollen" die bits eines IEE-754 floating point double precision um den maximal möglichen Wert von 1,0 aber genau das scheint wie ein Schmerz zu bekommen Recht, vor allem in Sprachen schlecht geeignet für die bit-manipulation. Gibt es einen einfacheren Weg?

(Nebenbei, warum Zufallszahlen-Generatoren erzeugen zahlen in [0,1) statt [0,1]?)

[Bearbeiten] Bitte beachten Sie, dass ich keine müssen für diese und ich bin mir voll bewusst, dass die Unterscheidung kleinlich ist. Einfach nur neugierig und hoffen auf einige interessante Antworten. Fühlen Sie sich frei, um die Abstimmung zu schließen, wenn diese Frage unangebracht ist.

InformationsquelleAutor der Frage maerics | 2012-03-15

Schreibe einen Kommentar