Inicio Apuntes FPApuntes DAW Ejercicio Básico JavaScript: Cómo crear 6 números aleatorios en un rango sin que se repitan

Ejercicio Básico JavaScript: Cómo crear 6 números aleatorios en un rango sin que se repitan

Publicado por entreunosyceros
Publicado el: Última actualización:

AVISO: Esta entrada tiene más de dos años desde su publicación. Es posible que el contenido esté desactualizado.

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&uacute;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&uacute;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>

 

 

También te puede interesar ...

Deja un comentario

* Al utilizar este formulario, aceptas que este sitio web almacene y maneje tus datos.