¿Número aleatorio sin repetir en Javascript?

Fabián Rodríguez Seguir

Lambda
Programador
Verificación en dos pasos activada
Desde
24 Mar 2008
Mensajes
2.866
Hola.
Estoy intentando crear un código en JS que me permita generar números aleatorios pero sin repetir.
Sigo lo siguiente:

1. Declarar un array con los posibles valores a elegir para ir eliminándolos cuando se el random los genere.
2. Generar un número aleatorio.
3. Guardar el indice del número generado
4. Guardar en una variable el número con el índice elegido.
5. Borrar el número del índice (array).

Pero NO funciona. Hay números que se siguen repitiendo que muestran un "undefined" cuando se imprimen. ¿Alguna idea?


HTML:
var num = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]; 
var random = Math.floor(Math.random()*num.length)
var indice = num.indexOf(random);				
var number = num[indice];				
num.splice(indice, 1);
 

hugo1

Beta
Verificación en dos pasos desactivada
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
28 Dic 2012
Mensajes
90
Hola [MENTION=1203]Fabián Rodríguez[/MENTION], para que te funcione usa la variable random como indice de esta manera:

Insertar CODE, HTML o PHP:
var num = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25];
var indice = Math.floor(Math.random()*num.length);
var number = num[indice];
num.splice(indice, 1);
 

Fabián Rodríguez

Lambda
Programador
Verificación en dos pasos activada
Desde
24 Mar 2008
Mensajes
2.866
Hola [MENTION=1203]Fabián Rodríguez[/MENTION], para que te funcione usa la variable random como indice de esta manera:

Insertar CODE, HTML o PHP:
var num = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25];
var indice = Math.floor(Math.random()*num.length);
var number = num[indice];
num.splice(indice, 1);

Funciona a la perfección. Mil gracias. De seguro esto también ayudará a los que lleguen por Google :fatigue:
 

¡Regístrate y comienza a ganar!

Beneficios

  • Gana dinero por participar
  • Gana dinero por recomendarnos
  • Descubre ofertas de empleo diariamente
  • Negocios seguros
  • ¡Información premium y más!

Acceder

¿Ya tienes una cuenta? Accede aquí

Arriba