zufallszahlen vergleichen

Howie

Erfahrenes Mitglied
Hallo Leute

Ich versuche hier verzweifelt ein kleines Problem zu lösen.
Ich habe 4 Zufallszahlen, möchte aber nicht das eine Zahl 2 mal vorkommt.
Die werte werden dann in einen Array gesichert. Hier ist erstmal mein Code.

Code:
var zufall_wahl = new Array (0,0,0,0) ;	
function zufall()
{
var a = 0 ;
	for (var i = 0; i <= 3; i++)
	{  
		zufall_zahl = Math.floor(Math.random()* wortanzahl);	
		zufall_wahl[a] = zufall_zahl ;
		a++ ;	


	}
}
Wie kann ich mein Problem lösen ? Bin für jede Hilfe dankbar.

Gruß
Howie
 
Du könntest bei jeder erzeugten Zufallszahl den Array durchgehen und nachgucken, ob die Zahl schon vorhanden ist. Wenn ja, dann erzeugst du eine neue Zufallszahl und probierst es erneut.


Praktisch wäre da eine while-Schleife....
du lässt den Array vorerst leer.
Deine Zufallszahlen hängst du immer als neues Element hinten dran(sofermn nicht schon vorhanden). Als Bedingung für die Schleife prüfst du dann jeweils, ob der Array bereits die von dir gewünschte Länge hat.
 
Ja, die frage die sich mir aber stellt : wie schaut diese while-schleife aus ?
Hattest du da vielleicht die Lösung ?

Gruß Howie
 
So zum Bsp:
Code:
<script type="text/javascript">
<!--
zufall_wahl = new Array();
wortanzahl=10;

function zufall()
{
zufall_wahl.length=0;

while(zufall_wahl.length<4)
  {
  blnInArray=false;
  zufall_zahl = Math.floor(Math.random()* wortanzahl);
  for(x=0;x<zufall_wahl.length;++x)
    {
    if(zufall_wahl[x]==zufall_zahl)
      {
      blnInArray=true;
      break;
      }
    }
  if(!blnInArray)
    {
    zufall_wahl.push(zufall_zahl);
    }
  }
return(zufall_wahl);
}
//-->
</script>
Mit zufall_wahl.length=0; wird der Array beim Aufruf der Funktion erstmal geleert.

while(zufall_wahl.length<4) ist die Schleifenbedingung.... diese läuft also solang, bis sich in zufall_wahl 4 Elemente befinden.

blnInArray ist eine Variable, anhand der später ermittelt wird, ob eine Zahl bereits im Array ist.

Code:
for(x=0;x<zufall_wahl.length;++x)
    {
    if(zufall_wahl[x]==zufall_zahl)
      {
      blnInArray=true;
      break;
      }
    }
Der Array wird durchlaufen in die zuvor deklarierte Variable blnInArray auf "true" gesetzt, falls die aktuelle Zufallszahl im Array gefunden wurde.

Code:
if(!blnInArray)
    {
    zufall_wahl.push(zufall_zahl);
    }
ist blnInArray immer noch "false", befindet sich die aktuelle Zahl nicht im Array und wird an selbigen angehängt.

Infos zu Schleifen in Javascript-> SelfHTML
 
Zuletzt bearbeitet:
Einen schönen Dank
Ich habe zwar eine Lösung für mein Problem gefunden, allerdings darf auch keine Zahl mehr dazu kommen. Deine Routine ist meiner um einiges voraus. Habe aus deiner Routine eine Menge gelernt.
Vielen Dank erstmal dafür.

Gruß Howie
 

Neue Beiträge

Zurück