| Portada | Monotemáticos | Secciones | Desarrolladores | Comunidad | Servicios | Servicios profesionales | RSS | ||||
26/4/02 - En Javascript disponemos de la clase Math, muy útil cuando queremos hacer cálculos matemáticos de cierta complejidad. Dicha clase está explicada y documentada en un capítulo del manual de Javascript II. Para el que lo necesite, también tenemos explicaciones de lo que son las clases y los objetos.
En este taller de Javascript vamos a construir una simple función para crear un número aleatorio, entre un mínimo y un máximo, que podremos utilizar luego en otros scripts más complejos.
Aquí tenemos el código que hace uso del método random de la clase Math para obtener un número aleatorio con Javascript.
var aleatorio = Math.random()
Así hemos creado una variable aleatorio a la que asignamos el resultado de ejecutar el método random de la clase Math. El número aleatorio que obtenemos siempre estará comprendido entre 0 y 1.
Si deseamos obtener un número aleatorio en otro rango lo podemos conseguir con un poco de matemáticas y la clase Math. Para ilustrarlo vamos a hacer una función que devuelve un número aleatorio comprendido en un intervalo. El intervalo lo recibe como parámetro con dos variables, una para el límite por la parte inferior y otra para la el límite por la parte superior.
function aleatorio(inferior,superior){
numPosibilidades = superior - inferior
aleat = Math.random() * numPosibilidades
aleat = Math.round(aleat)
return parseInt(inferior) + aleat
}
La función que hemos hecho es muy sencilla, pero funciona perfectamente para todos los tipos de intervalos que podamos pasarle, tanto con números positivos como negativos. Lo primero que hacemos es obtener el número de posibilidades restando al límite superior el inferior. Luego multiplicamos dicho numero de posibilidades por el número aleatorio obtenido (que está entre 0 y 1), con lo que obtenemos un número aleatorio entre 0 y el número de posibilidades.
| Nota: Esta función tiene un pequeño problema, pues los números aleatorios que devuelve no tienen las mismas posibilidades de salir. Para solucionarlo, un visitante ha incluido un comentario en el artículo que se aconseja leer. |
Un ejemplo de lo que podemos hacer con un número aleatorio puede ser crear un enlace aleatorio en una página web. Lo podemos ver en el ejemplo Enlace aleatorio en Javascript. Además, en este ejemplo se crea el número aleatorio de manera ligeramente distinta a como lo hemos visto ahora, lo que puede ser interesante para aprender mejor a usar los métodos de la clase Math.
| Nota: Insisto, leeros los comentarios que acompañan a este artículo (un poco más abajo de estas líneas) ya que ofrecen scripts mejorados para crear números aleatorios. Además, hay algún comentario con un script para asegurarse que las posibilidades de aparición de cada valor aleatorio sean las mismas. |
| Autoría, licencia y acciones sobre este artículo | ||||||
|
Informe de Miguel Angel Alvarez*
Director de DesarrolloWeb.com Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright. * Para consultas técnicas utilizar la lista de correo.
|
| Los comentarios de los visitantes son para ampliar la información del artículo. Cualquiera puede participar. |
| Se muestran 5 comentarios revisados |
Simplemente realizo una muestra de 1000 números aleatorios y acumulo cuantas veces aparece cada uno de ellos. Luego muestro las veces que han aparecido y las apariciones deberían ser bastante próximas para los distintos valores posibles.
Parece que todo funciona bien y que los números aleatorios salen perfectamente. Este es el script que he creado:
<script>
//creo un array
contador_apariciones=new Array()
contador_apariciones[5]=0
contador_apariciones[6]=0
contador_apariciones[7]=0
contador_apariciones[8]=0
for(var i = 1; i <= 1000; i++){
var inferior = 5;
var superior = 8;
var numPosibilidades = (superior + 1) - inferior;
var aleat = Math.random() * numPosibilidades;
aleat = Math.floor(aleat);
aleat = (inferior + aleat);
contador_apariciones[aleat]++
document.writeln("Entre " + inferior + " y " + superior + " aleatorio " + i + " : " + aleat);
document.writeln("<br>");
if((aleat < inferior) || (aleat > superior)) System.out.println("Rango erroneo");
}
document.writeln ("<p>")
document.writeln ("<br>Contador de apariciones del 5: " + contador_apariciones[5])
document.writeln ("<br>Contador de apariciones del 6: " + contador_apariciones[6])
document.writeln ("<br>Contador de apariciones del 7: " + contador_apariciones[7])
document.writeln ("<br>Contador de apariciones del 8: " + contador_apariciones[8])
</script>
| Añadir un comentario del artículo |
| Comentarios sin revisar |
| Entre los comentarios no revisados puede haber algunos interesantes que se hayan enviado recientemente. |
| Ver los comentarios no revisados |
| Añadir un comentario del artículo |
| Enlaces: |
| Maestrosdelweb |
Lectura recomendada Compra este libro en Agapea, la librería urgente a domicilio. |
||||||||
Tienda DesarrolloWeb