tim: Zufallszahl zwischen 1 und 30

hallo

hat jemand eine idee, wie ich eine zufallszahl im gegebenen zahlenbereich generieren kann?
random ..???

danke

  1. 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

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. 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

      1. 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

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. 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

          --
          “I got my finger on the trigger / But I don’t know who to trust” (Bruce Springsteen, Devils and Dust)
          1. 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

    2. 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

      1. 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

      2. 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

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. 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

          1. 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

            --
            - Wissen ist gut
            - Können ist besser
            - aber das Beste und Interessanteste ist der Weg dahin!
            1. 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
              
              1. 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

                --
                - Wissen ist gut
                - Können ist besser
                - aber das Beste und Interessanteste ist der Weg dahin!
                1. 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

  2. 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