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)