Struppi: Zahlen von eins bis 16 in zufälliger Reihenfolge - Array mischen

Beitrag lesen

Meinst du in etwa so?

var myArray = new Array ('null', 'eins', 'zwei', 'drei', 'vier',
                        'fünf', 'sechs', 'sieben', 'acht', 'neun',
                        'zehn', 'elf', 'zwölf', 'dreizehn',
                        'vierzehn', 'fünfzehn', 'sechzehn');

var mix = new Array();
var max = myArray.length;

function rollDice () {
  var num = -1;
  do {
    num = parseInt(Math.random()* myArray.length);
  } while((isNaN(num))||(num<0));
  return num;
}

function mixIt (){
  for (var i=0; i<max; i++) {
    num = rollDice();
    myArray1 = myArray.slice(0,num);
    myArray2 = myArray.slice(num);
    mix[i] = myArray2.shift();
    myArray = myArray2.concat(myArray1);
  }
  myArray = mix;
  return mix;
}

function writeIt () {
   for (var i=0; i<30; i++) {
     document.write(mixIt().join('<span style="color:red">&nbsp;|&nbsp;</span>')+'<br>');
   }
}

writeIt();

  
Sieht umständlich aus, finde ich.  
  
Ich würd's so machen:  
~~~javascript
  
var myArray = new Array ('null', 'eins', 'zwei', 'drei', 'vier',  
                        'fünf', 'sechs', 'sieben', 'acht', 'neun',  
                        'zehn', 'elf', 'zwölf', 'dreizehn',  
                        'vierzehn', 'fünfzehn', 'sechzehn');  
  
mischen(myArray)  
alert(myArray.join('\n'));  
  
function mischen(array, anzahl)  
{  
    if(!anzahl || anzahl < 0) anzahl = 1;  
    while(anzahl--)  
    {  
         for(var i = 0; i < array.length; i++)  
         {  
              var index = parseInt( Math.random() * array.length - 1);  
              var tmp = array[index];  
              array[index] = array[i];  
              array[i] = tmp;  
         }  
    }  
}  

einfach uhnd schnell.

Struppi.