Tina: Zufällig Werte aus Array auswählen

Hallo zusammen,

ich habe ein JavaScript Array mit ca. 2300 Elementen (Vornamen).

Als zweites habe ich eine Schleife (welche öfters als 2300 mal durchlaufen werden kann) in welcher ich auf den Namen-Array zugreifen möchte und mir zufällig einen Namen herauspicken möchte.

Gibt es eine Möglichkeit aus einem Array zufällig einen Wert herauszulesen?

Beispiel:
var vornamen = new Array(.....);
for (var i=0; i<irgendEineZahl; i++)
{
  document.writeln( i + ": " + getRandomVorname() + "<br>");
}
function getRandomVorname()
{
  // hier wird nun ein zufälliger Eintrag aus dem vornamen Array zurück gegeben
}

Danke im Voraus.
Liebe Grüße
Tina

  1. Grütze .. äh ... Grüße!

    Gibt es eine Möglichkeit aus einem Array zufällig einen Wert herauszulesen?

    Joa .. mit Math.random eine Zufallszahl zwischen 0 und 1 erzeugen, diese mit vornamen.length multiplizieren und das ganze mit Math.ceil zu einer Ganzzahl verarbeiten.


    Kai

    --
    What is the difference between Scientology and Microsoft? One is an
    evil cult bent on world domination and the other was begun by L. Ron
    Hubbard.
    ie:{ fl:( br:< va:) ls:? fo:| rl:? n4:° ss:{ de:] js:| ch:? mo:| zu:|
    1. Hallo Kai,

      Danke. Hat funktioniert.
      Tina

      1. Grütze .. äh ... Grüße!

        Danke. Hat funktioniert.
        Tina

        Ich bin blöd.
        Nimm statt Math.ceil Math.floor


        Kai

        --
        What is the difference between Scientology and Microsoft? One is an
        evil cult bent on world domination and the other was begun by L. Ron
        Hubbard.
        ie:{ fl:( br:< va:) ls:? fo:| rl:? n4:° ss:{ de:] js:| ch:? mo:| zu:|
        1. Hello out there!

          Ich bin blöd.

          Zumindest nicht so blöd, Math.random zu nennen. ;-)

          Nimm statt Math.ceil Math.floor

          Wieviele Auslosungen dauert es sonst im Mittel, bis ein Laufzeitfehler auftritt?

          See ya up the road,
          Gunnar

          --
          „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
          1. Grütze .. äh ... Grüße!

            Ich bin blöd.
            Zumindest nicht so blöd, Math.random zu nennen. ;-)

            Magst Du einen Schlauch haben? Fast neuwertig, nur einmal drauf gestanden. Wäre nur nett, wenn du mich vorher von Selbigem herunterführen würdest.

            Nimm statt Math.ceil Math.floor
            Wieviele Auslosungen dauert es sonst im Mittel, bis ein Laufzeitfehler auftritt?

            Zu wenige?


            Kai

            --
            What is the difference between Scientology and Microsoft? One is an
            evil cult bent on world domination and the other was begun by L. Ron
            Hubbard.
            ie:{ fl:( br:< va:) ls:? fo:| rl:? n4:° ss:{ de:] js:| ch:? mo:| zu:|
            1. Hello out there!

              Zumindest nicht so blöd, Math.random zu nennen. ;-)

              Magst Du einen Schlauch haben? Fast neuwertig, nur einmal drauf gestanden. Wäre nur nett, wenn du mich vorher von Selbigem herunterführen würdest.

              http://forum.de.selfhtml.org/archiv/2006/7/t132358/#m856490 – her mit dem Schlauch!!1elf

              Nimm statt Math.ceil Math.floor
              Wieviele Auslosungen dauert es sonst im Mittel, bis ein Laufzeitfehler auftritt?

              Zu wenige?

              ??

              Die Frage war durchaus ernsthaft gemeint. Ich wüsste ohne tieferes Überlegen auf die Schnelle nicht; wieviele Auslosungen es im Mittel dauert, bis Math.random() eine Zahl aus dem Intervall ](N-1)/N, 1[ liefert, Math.ceil(Math.random()) also N ergibt, der Zugriff auf das nicht existierende Arrayelement mit diesem Index also einen Laufzeitfehler.

              See ya up the road,
              Gunnar

              --
              „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
              1. Grütze .. äh ... Grüße!

                Zumindest nicht so blöd, Math.random zu nennen. ;-)

                http://forum.de.selfhtml.org/archiv/2006/7/t132358/#m856490 – her mit dem Schlauch!!1elf

                Ich bin wohl wirklich zu doof. Ich _habe_ doch Math.random genannt? Den Schlauch bekommst du trotzdem, ist nur in der Mitte etwas platt ;)

                Wieviele Auslosungen dauert es sonst im Mittel, bis ein Laufzeitfehler auftritt?
                Zu wenige?

                Die Frage war durchaus ernsthaft gemeint. Ich wüsste ohne tieferes Überlegen auf die Schnelle nicht; wieviele Auslosungen es im Mittel dauert, bis Math.random() eine Zahl aus dem Intervall ](N-1)/N, 1[ liefert, Math.ceil(Math.random()) also N ergibt, der Zugriff auf das nicht existierende Arrayelement mit diesem Index also einen Laufzeitfehler.

                Ach so. Ich habe angenommen, daß es eine Frage sei, zu der du bereits die Antwort kennst und mit der du mich auf die Probe stellen wolltest. Ich wüßte es auch nicht, meine Antwort "zu wenige" basiert daher ausschließlich auf Murphy, im Testbetrieb wird der Fall garantiert auch bei 5000 Durchläufen nicht auftreten, im Produktivbetrieb jedoch bei < 10 ;)


                Kai

                --
                What is the difference between Scientology and Microsoft? One is an
                evil cult bent on world domination and the other was begun by L. Ron
                Hubbard.
                ie:{ fl:( br:< va:) ls:? fo:| rl:? n4:° ss:{ de:] js:| ch:? mo:| zu:|
                1. Hello out there!

                  Ich bin wohl wirklich zu doof.

                  Nein. Ich.

                  Ich _habe_ doch Math.random genannt?

                  Argl, das meinte ich auch nicht; sondern stattdessen in

                  Zumindest nicht so blöd, Math.random zu nennen. ;-)

                  Math.round

                  Fängt ja auch mit 'r' an ... Mein Fehler.

                  See ya up the road,
                  Gunnar

                  --
                  „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
                  1. Grütze .. äh ... Grüße!

                    Math.round
                    Fängt ja auch mit 'r' an ... Mein Fehler.

                    Alles klar. Jetzt verstehe ich es auch. Gut, daß es kein Beispiel war, das z.B. Math.abs() benötigt, Methoden mit 'a' gäbe es direkt vier ;)

                    Aber besser als ich ..  'Math.floor' und 'Math.ceil' wervechsel ich irgendwie mit konstant, obwohl f!=c . *grummel*


                    Kai

                    --
                    What is the difference between Scientology and Microsoft? One is an
                    evil cult bent on world domination and the other was begun by L. Ron
                    Hubbard.
                    ie:{ fl:( br:< va:) ls:? fo:| rl:? n4:° ss:{ de:] js:| ch:? mo:| zu:|
              2. hi,

                Die Frage war durchaus ernsthaft gemeint. Ich wüsste ohne tieferes Überlegen auf die Schnelle nicht; wieviele Auslosungen es im Mittel dauert, bis Math.random() eine Zahl aus dem Intervall ](N-1)/N, 1[ liefert, Math.ceil(Math.random()) also N ergibt

                Math.ceil(Math.random()*N) meinst du vermutlich.

                der Zugriff auf das nicht existierende Arrayelement mit diesem Index also einen Laufzeitfehler.

                Wenn davon auszugehen ist, dass Math.Random einen gleichverteilten Zufall bietet, müsste der Fall doch im Mittel nach N "Ziehungen" eintreten, oder?

                gruß,
                wahsaga

                --
                /voodoo.css:
                #GeorgeWBush { position:absolute; bottom:-6ft; }
                1. Hello out there!

                  Math.ceil(Math.random()*N) meinst du vermutlich.

                  Klar.

                  Wenn davon auszugehen ist, dass Math.Random einen gleichverteilten Zufall bietet, müsste der Fall doch im Mittel nach N "Ziehungen" eintreten, oder?

                  Ich glaube nicht, dass die Anzahl der Ziehungen bis zum ersten Eintreffen eines bestimmten Ereignisses normalverteilt ist. Müsste aber erstmal nachlesen.

                  See ya up the road,
                  Gunnar

                  PS: Math.random meinst du vermutlich. SCNR.

                  --
                  „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)