peterS.: die Array-Methode [shuffle]

Beitrag lesen

hallo jungs,

und wenn du die for- durch eine abwärtslaufende do-while-Schleife ersetzt, wird es sogar noch etwas schneller:

Array.prototype.shuffle=function() {
var l=this.length,t,zi,i=l;
  do {
   zi=Math.floor(Math.random()*i);
   t=this[zi];
   this[zi]=this[--i];
   this[i]=t;
  } while (i);
}

  
  
ich haette auch noch eine loesung anzubieten:  
  
  
~~~javascript
Array.prototype.shuffle = (function () {  
  
  this.sort(function () {  
  
    return (0.5 - Math.random());  
  });  
});
~~~ ...  
  
... oder etwas umfangreicher als bausatz namens »Math.randomize«:  
<http://www.pseliger.de/jsExtendedApi/jsApi.Math.randomize.dev.js> bzw.  
<http://www.pseliger.de/jsExtendedApi/jsApi.Math.randomize.js>, ...  
  
... wobei ich niemals ausprobiert habe, wie nah die  
loesungen aus dieser methode an eine hinreichend  
genaue gleichverteilung heranreichen.  
  
  
was haltet Ihr davon?  
  
  
  
so long - peterS. - pseliger@gmx.net  
  
  

-- 
»Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.  
Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive.« - [Douglas Crockford](http://javascript.crockford.com/)  
  
[ie:( fl:) br:> va:( ls:& fo:) rl:) n3;} n4:} ss:} de:µ js:} mo:? zu:\]](http://www.peter.in-berlin.de/projekte/selfcode/?code=ie%3A%28+fl%3A%29+br%3A%3E+va%3A%28+ls%3A%26+fo%3A%29+rl%3A%29+n3%3B%7D+n4%3A%7D+ss%3A%7D+de%3A%B5+js%3A%7D+mo%3A%3F+zu%3A%5D)