• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Problem bei Implementierung einer Methode, die ganze Zufallszahlen erzeugen soll

Weyoun

New member
Hallöchen, allerseits!

Ich bin gerade dabei, ein Spiel zu programmieren, jedoch habe ich nirgends gefunden, wie man ganze Zufallszahlen erzeugt. Die Random-Funktion kann ja nur Gleitkommazahlen zwischen 0 und 1 erstellen, ich benötige jedoch Zahlen zwischen 0 und 24.

Kurzer Hintergrund: Ich habe 25 Fragen (pro Schwierigkeitsstufe), von denen nur 5 gestellt werdem sollen.
Dazu habe ich jeweils ein Array (1 pro Schwierigkeitsstufe) erstellt, dessen 25 Werte alle "1" betragen.
Nach einer gestellten Frage wird die "x-te Stelle" des Arrays auf "0" gesetzt. Und damit das ganze wirklich zufällig abläuft, soll die Zufallsfunktion eine int-Zahl zwischen 0 und 24 erstellen, dann prüfen, ob die x-te Stelle "0" oder "1" ist (also die Frage schon gestellt wurde) und gegenenfalls die Prozedur wiederholen, bis eine Frage "gewürfelt" wird, die noch nicht dran war.

In C# habe ich es so realisiert:
Code:
private void ZufallLeicht()
        {
            int ZufallVariable01;
            do
            {
                Random random01 = new Random();
                ZufallVariable01 = random01.Next(0, 24);
            }
            while (leicht[ZufallVariable01] == 0);
            if (FragenzaehlerLeicht > 5) { ZufallMittel(); }
            else
            {
                FragenzaehlerLeicht++;
                Meldungsfenster.Text = ZufallVariable01.ToString();
                leicht[ZufallVariable01] = 0;
                if (ZufallVariable01 == 0) { FrageLeicht01(); }
                if (ZufallVariable01 == 1) { FrageLeicht02(); }
                  ...........................
                if (ZufallVariable01 ==24) { FrageLeicht25(); }
            }
        }

Ich möchte im Prinzip nur wissen, wie man mit JavaScript eine solche Zufallsvariable erzeugt und dann bestimmte Werte abfragen kann.

Ich hoffe, ich habe mich einigermaßen verständlich ausgedrückt. :confused:

Vielen Dank schon mal im Voraus und ein schönes (Rest-)Wochenende noch!

Gruß, Martin
 
Zuletzt bearbeitet:
Moin!

Man kann mit der random()-Funktion alles Mögliche anstellen, u. a., sie für eine kleine eigene Funktion "mißbrauchen":

function kleineRandomFunktion(von,bis){
x=Math.floor(von+Math.random()*(bis+1-von));
return x;
}
alert(kleineRandomFunktion(0,3));

Im "Standardfall" geht es eh um Zahlen von 0 bis x, für Zahlen von 0 bis 24 reicht z. B.:
zufall=Math.floor(Math.random()*25)

Ahoi - Pit
 
Danke für die schnelle Antwort, doch leider klappt es nicht so recht!

Immer wenn ich auf "Start" klicke, kommt stets zuerst die "Frage 25" (die letzte der Kategorie leicht).

Irgendwie stimmt da mit dem Zufallsgenerator nicht.

Wo ist der Fehler?

Das (momentane) Programm schicke ich als Anhang, da es bereits 1.000 Zeilen Quellcode besitzt (es würde das Forum etwas "sprengen", wenn ich das als Code mitzuschicken versuche).

Gruß, Martin
 

Anhänge

  • Millionaer03.zip
    3,7 KB · Aufrufe: 2
Da kann doch was nicht stimmen!?!

Code:
function ZufallszahlLeicht ()
{
do {  Zufall1 = Math.floor(Math.random()*25);  }
while (Leicht[Zufall1] == 0);
FragenzaehlerLeicht++;
alert(Zufall1);
Leicht[Zufall1] = 0;
switch (Zufall1)
{
case 0: FragestellungLeicht01();
case 1: FragestellungLeicht02();
case 2: FragestellungLeicht03();
case 3: FragestellungLeicht04();
........und so weiter................
case 23: FragestellungLeicht24();
case 24: FragestellungLeicht25();
}
}

.................................

function FragestellungLeicht01()
{
document.form1.Fragestellung.value = "Frage01";
document.form1.AntwortA.value = "AntwortA01";
document.form1.AntwortB.value = "AntwortB01";
document.form1.AntwortC.value = "AntwortC01";
document.form1.AntwortD.value = "AntwortD01";
}

function FragestellungLeicht02()
{
document.form1.Fragestellung.value = "Frage02";
document.form1.AntwortA.value = "AntwortA02";
document.form1.AntwortB.value = "AntwortB02";
document.form1.AntwortC.value = "AntwortC02";
document.form1.AntwortD.value = "AntwortD02";
}

............und so weiter und so fort................

Fazit: Durch das "alert" in der ersten Funktion wird mitgeteilt, dass der Zufallsgenerator perfekt funktioniert (jedesmal eine andere Zahl). Doch dann kommt jedes mal im Textfenster "Fragestellung" der Text "Frage25", egal, welchen Wert die Variable "Zufall1" nun hat.

Woran kann es liegen:
1) An der Switch-Anweisung mit den 25 Case-Fällen?-> kann ich mir eigentlich kaum vorstellen
2) An der Wertzuweisung des x-ten Elementes des Arrays "Leicht"? -> normalerweise müsste aber die Anweisung
Code:
Leicht[Zufall1] = 0
dafür sorgen, dass die "Zufall1+1-te Selle" des Strings den Wert 0 annimmt.

Ich bin total ratlos.

Plz help!

Gruß, Martin
 
ARGH!!!

Ich bin doch ein absolutes "Riesen-Rindvieh"!

Ich habe doch glatt die "break"-Anweisungen hintern den "case"-Blöcken vergessen.

Wenn dann wenigstens eine Fehlermeldung gekommen wäre, aber nein, ich musste mich erst stundenlang abmühen. :D
Da wünscht man sich doch glatt ein Tool mit einem vernünftigen Debugger für JavaScripte! Gibt es so etwas eigentlich? (Sollte in etwa so arbeiten wie der Debugger bei Visual Studio 2005 oder bei Delphi)
Wenn es so etwas nicht gibt, könnte man sich damit glatt eine goldene Nase verdienen, indem man so etas erschafft. :D

Gruß, Martin
 
Zurück
Oben