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.

Adblock Detectado!!

Ayúdanos deshabilitando la extensión AdBlocker de tu navegador para visitar esta web.
Si no sabes hacerlo en Chrome, consulta el siguiente enlace. Si utilizas Firefox, puedes consultar este otro enlace.
Esto mejorará tu experiencia en este sitio web.