Lottozahlengenerator Javascript

...komplette Frage anzeigen

4 Antworten

Hallo, meiner Meinung nach ist es am Besten einfach den realen Vorgang im Code nachzustellen. Das bedeutet: 1. Ein Array mit den Zahlen von 1 bis 49 befüllen 2. Pro Zug zufällig eine Zahl aus dem Array wählen 3. Sofort nach dem wählen die betreffende Zahl aus dem Array löschen und damit sozusagen die Kugel aus dem Behälter entfernen so dass sie beim nächsten Zug nicht mehr gewählt werden kann.

Im Code sieht das dann so aus:

        var y = new Array();
        var kugeln = new Array();
        
        for (var i = 1; i<=49; i++) {
            kugeln.push(i);
        }
        console.log(kugeln);
        
        // ziehen   
        for  (var j = 0; j<6; j++) {
            var randomIndex = Math.floor(Math.random() * kugeln.length);
            y.push(kugeln[randomIndex]);
            
            kugeln.splice(randomIndex,1); // gezogene Kugel aus dem Basisarray entfernen
        }
        console.log("Gezogene Zahlen: " + y);

sau gute Antwort.

vielen vielen dank

0

Das ist falsch.... Math.floor(Math.random() * kugeln.length) kann hier auch 0 ergeben.

0
@elgeeko

und genau das ist hier erwünscht, weil ein zufälliger Arrayindex berechnet wird, und nicht die Zahl selbst.

0
@polykrom

Ja, jetzt seh ichs,... sehr kompliziert das ganze Konstrukt mit 2 Arrays

0

Ach ja die sechs Zahlen sind in einem Array y[] gespeichert

Schleifen brauchst du hier nicht, geht auch per Rekursion:

(function lotto(zahlen){
    if( zahlen.length == 6 ) return console.log( zahlen );
    var num = Math.ceil( Math.random() * 49 ); //ceil() verwenden damit Zahl zwischen 1 - 49 ist
    if(zahlen.indexOf( num ) == -1) zahlen.push( num ); 
    lotto(zahlen);
})([]);

Was hat das mit Java zu tun?

Was möchtest Du wissen?