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>
