Ver Mensaje Individual
  #2 (permalink)  
Antiguo 11/11/2007, 11:43
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: Optimización: Escoger un elemento aleatorio de un array no escogido ya

A ver pues, un primer intento que seguramente sea la forma en que lo resolverías "a lo bestia"

Código PHP:
var miArray = ['flgo', 20, 'pgre', 22, 13, 8, 16, 'frkiysoj', 9, Infinity, 11, 14, true, 'bstuhcv', 'bhatnck', 7, 17, 'nusfgcvd', 19, 21, 'gmwp', 'incauo', 'hqu', { color: "rojo", forma: "cuadrado" }, 'kficoprn', 'qofxpdsn', 'ugdoebq', 'kxmhs', 3, 'bfce', 'neduh', 15, 'ueifchsj', 'kgdmj', 'ojk', 'vfqoyhli', 'buno', 18, 'nrkmf', 12, 6, 23, 'hnvroupj', 'gkdtnhq', document.body, 10, 'qghsfpdr', 24, 1, window.screen, undefined, null, 0, 'ewgmq', NaN, 4, function () { }, 2, 5, window.onload, void(0), -Infinity];
var 
yaElegidos = [];
var 
largo = miArray.length;

function 
dameElemento() {
    
largoElegidos = yaElegidos.length;
    if ( 
largoElegidos < largo ) {
        
// termina con 'indice' siendo un índice de la matriz que todavía no fue elegido.
        
while ( yaElegidos.indexOf(indice = Math.floor( Math.random() * largo )) !== -1 );
        
yaElegidos[largoElegidos] = indice;
        return 
miArray[indice];
    }
    else
        return 
false;
} 
Opera me da un error en el while, 'type mismatch'. No logro identificar el por qué

Saludos.

Última edición por AlvaroG; 11/11/2007 a las 12:01