Zufallszahl zwischen 1 und 30
tim
- javascript
hallo
hat jemand eine idee, wie ich eine zufallszahl im gegebenen zahlenbereich generieren kann?
random ..???
danke
hi,
hat jemand eine idee, wie ich eine zufallszahl im gegebenen zahlenbereich generieren kann?
random ..???
Math.random liefert eine zahl größer gleich 0 und kleiner als 1.
also multipliziere diese mit einem geeigneten faktor, um diese grenzen auf 0 bis 29 "aufzubohren", runde diese zahl, und addiere noch 1.
gruß,
wahsaga
Hallo wahsaga,
runden ist schlecht, da dann die Randzahlen nur mit halber Wahrscheinlichkeit kommen: 0.5 bis 1.499 wird auf 1 abgebildet, aber nur 0 bis 0.499 auf 0. Ich würde hier immer floor oder ceil nehmen.
Gruß, Jürgen
hi,
runden ist schlecht, da dann die Randzahlen nur mit halber Wahrscheinlichkeit kommen: 0.5 bis 1.499 wird auf 1 abgebildet, aber nur 0 bis 0.499 auf 0. Ich würde hier immer floor oder ceil nehmen.
ist 'n argument.
gruß,
wahsaga
wahsaga,
runden ist schlecht, da dann die Randzahlen nur mit halber Wahrscheinlichkeit kommen: 0.5 bis 1.499 wird auf 1 abgebildet, aber nur 0 bis 0.499 auf 0. Ich würde hier immer floor oder ceil nehmen.
ist 'n argument.
Kein neues. ;-) </archiv/2005/1/t98169/#m598387> ff.
Gunnar
Hallo Gunnar Bittersmann,
Kein neues. ;-) </archiv/2005/1/t98169/#m598387> ff.
oder </archiv/2004/11/t94017/#m569022>.
Leider findet man im Archiv aber sehr viele Postings über Zufallszahlen, die Math.round vorschlagen.
Gruß, Jürgen
hi,
hat jemand eine idee, wie ich eine zufallszahl im gegebenen zahlenbereich generieren kann?
random ..???Math.random liefert eine zahl größer gleich 0 und kleiner als 1.
also so ungefähr?
current_num = round((Math.random() + 1)*6)
also multipliziere diese mit einem geeigneten faktor, um diese grenzen auf 0 bis 29 "aufzubohren", runde diese zahl, und addiere noch 1.
gruß,
wahsaga
Hi,
also so ungefähr?
current_num = round((Math.random() + 1)*6)
ich sag jetzt einfach mal ja. probiers doch aus, aber beachte das du
den Wert 0 nicht bekommst da 0,3 auf 0 gerundet wird. 0+1=1
MfG
hi,
also so ungefähr?
current_num = round((Math.random() + 1)*6)
nein.
round ist ebenfalls eine methode des Math-objektes, also rufe sie bitte auch als solche auf. (bzw. nutze besser ceil(), siehe auch hinweis von Jürgen.)
und wie du darauf kommst, dass eine multiplikation mit 6 aus werten kleiner 1 werte bis zur obergrenze 29 bzw. 30 erzeugen soll, müsstest du auch mal erläutern.
gruß,
wahsaga
hi,
also so ungefähr?
current_num = round((Math.random() + 1)*6)
besser ist wohl doch so?
haut hin! danke
var current_x = Math.floor((Math.random()*30)+1);
30 steht dabei für die obere begrenzung der zahlung.
nein.
round ist ebenfalls eine methode des Math-objektes, also rufe sie bitte auch als solche auf. (bzw. nutze besser ceil(), siehe auch hinweis von Jürgen.)
und wie du darauf kommst, dass eine multiplikation mit 6 aus werten kleiner 1 werte bis zur obergrenze 29 bzw. 30 erzeugen soll, müsstest du auch mal erläutern.
gruß,
wahsaga
Hallo tim,
var current_x = Math.floor((Math.random()*30)+1);
Und warum unnötig kompliziert?
Du hast den Hinweis auf ceil() bekommen.
var current_x = Math.ceil(Math.random()*30);
Auf Wiederlesen
Detlef
Hallo,
var current_x = Math.floor((Math.random()*30)+1);
nur so ist es imho richtig.
var current_x = Math.ceil(Math.random()*30);
Das Ergebnis-Intervall von Math.random ist wohl [0,1), d.h. im Falle der 0 versagt dein Vorschlag.
cu,
ziegenmelker
Hallo ziegenmelker
var current_x = Math.floor((Math.random()*30)+1);
nur so ist es imho richtig.
Ja, genau so _ist_ es richtig.
Ich hätte das Gehirn eingeschaltet lassen und zu ende denken sollen.
In Standard ECMA-262 unter 15.8.2.14 random ( ) steht:
"Returns a number value with positive sign, greater than or equal to 0 but less than 1, chosen randomly
or pseudo randomly with approximately uniform distribution over that range, using an
implementation-dependent algorithm or strategy. This function takes no arguments."
Also ist der Rückgabewert von Math.random: 0 <= X < 1
Leider steht dies in vielen Publikationen imho unzulässig vereinfacht als
Wert zwischen 0 und 1, was bedeuten würde, das er weder 0 noch 1 annehmen kann.
Auf Wiederlesen
Detlef
Hallo Detlef,
Also ist der Rückgabewert von Math.random: 0 <= X < 1
Leider steht dies in vielen Publikationen imho unzulässig vereinfacht als
Wert zwischen 0 und 1, was bedeuten würde, das er weder 0 noch 1 annehmen kann.
genau das ist mir auch aufgefallen, dabei wäre es doch so einfach es gleich richtg zu schreiben.
Ich finde die mathematische Darstellung:
Math.random() = x, mit x Element aus [0,1) (und x aus R)
schon fast visuell selbsterklärend.
cu,
ziegenmelker
Hallo tim,
Math.random erzeugt eine Zufallszahl 0 < x < 1. Multiplikation mit N erzeugt eine Zahl 0 < x < N. Wenn es ganze Zahlen sein sollen, wende Math.floor an, dann erhältst Du 0 <= x <= (N-1).
Gruß, Jürgen