Otra vez aquí combatiendo el insomnio dándole un poco de marcha a la materia gris. Hoy me he puesto un poco con JavaScript, que hacía tiempo que no publicaba nada sobre ello. El ejercicio que voy a publicar hoy sobre JavaScript viene siendo un programa para generar 6 números aleatorios. Todos comprendidos entre el 1 y el 49. La cosa es que los números generados no se repitan. Para terminar, tendrá que hacerse dentro de una función que será llamada desde un botón HTML.
Vamos a darle una vuelta de tuerca. Cuando se generen los números solicitados tendrá que darse la opción al usuario de volver a generar los números. También tendremos la posibilidad de quedarnos con los números que se acaban de generar.
Crear 6 números aleatorios en un rango sin que se repitan con JavaScript
Bueno, dicho esto … vamos a ver como hacer … (ni que decir tiene que, es más que probable que esta solución no sea la más indicada ni la más optimizada, pero es la que a mi se me ha ocurrido).
<html> <head> <title> Generar números aleatorios </title> <script language="javascript" type="text/javascript"> function recargar() { document.location.href= 'javascript:history.back()'; //se vuelve a cargar la página } // 6 numeros aleatorios entre 1 y 49 // evitando que se repitan usando indexof function dados() { numeros = new Array(); //array dónde almacenar los seis números minimo = 1; //valor mínimo posible maximo = 49; //valor máximo posible for (i=0;i<6;i++){ temp = Math.round(Math.random() * maximo); //generanos número aleatorio temporal = parseInt((Math.floor(temp))+1); //redondeamos, para evitar decimales if ((temporal >= minimo) && (temporal <= maximo)) { // Si el elemento no se encuentra en numeros[] agregamos (push), en caso // de que si se encuentre (continue;), saltar al siguente numero, restando //uno al contador del for. if(numeros.indexOf(temporal)!=-1){ i--; //en caso de valor incorrecto se descuenta uno para que salgan 6 valores continue; } else { numeros.push(temporal); //agregamos al array el número de temporal } }else{ i--;//en caso de valor incorrecto se descuenta uno para que salgan 6 valores continue; } } // for (i=0;i<numeros.length;i++){ alert("Numero "+(i+1)+" = "+numeros[i]); //visualizamos los números por ventana emergente } //Preguntamos si se vuelven a generar numeros. Si es que si, se llama a la función recargar if(confirm("Quieres volver a generar los numeros?")) { recargar(); }else{ //Si no queremos volver a generar imprimos por pantalla los strings y los números ya generados. document.write("<div align='center'><h1><strong>Fin del programa</strong></h1>"); document.write("<h3>Números ganadores:</h3>"); document.write("<table border='1'><tr>"); for (i=0;i<numeros.length;i++){ document.write("<td>"+numeros[i]+"</td>"); } document.write("</tr></table></div>"); } } </script> </head> <body> <div align="center"><input type="button" value="LANZAR" onClick="dados();"></div> </body> </html>