so_isses: zufall

hi,

ich habe folgendes Problem: ich habe ein array der größe 24. jedem element im array soll zufällig eine zahl von 1 bis 12 zugeordnet werden,wobei eine zahl insgesammt nur zweimal vorkommen darf.

mein lösungsansatz:

var karte = new Array(24)

var z1
var z2=0

for(var a = 1; a <= 24; a++)  {

z1 = Math.floor(Math.random() * 12) + 1

for(var b = 1; b <= a; b++)  {
  if (karte[b]==z1) {z2++}
 }
 if (z2<3) {karte[a]=z1} else{a--}
 z2=0

}

wenn jemand mir helfen könnte wäre ich sehr dankbar

mfg fabian

  1. Was ich vergessen habe zu sagen: meine lösungsansatz funktioniert nicht so, wie er sollte. :-)

  2. Hi Fabian,

    mein Lösungsansatz:

    var karte=new Array(24)
    var i,x,y,z
    y=""

    for(i=0;i<24;i++)
      {
      x=Math.floor(Math.random()*12)+1
      if(y.IndexOf(x+".")==-1)
        {
        y+=x+"."
        karte[i]=x
        }
      else
        {
        z=y.substr(y.IndexOf(x+"."),(y.length-y.IndexOf(x+"."))-1)
        if(z.IndexOf(x+".")==-1)
          {
          y+=x+"."
          karte[i]=x
          }
        else i--
        }
      }

    Das ganze habe ich jetzt nicht mit einem Browser getestet. Der Grund liegt auf der Hand: Es sind Zufallszahlen! Die Ausführung dieses Scriptes kann also rein zufällig auch über Stunden(!) dauern, jedoch erfüllt sie Deine Vorgabe.

    Gruß aus Berlin!
    eddi