Consejos útiles

Generación de números aleatorios en javascript

La generación de números aleatorios fraccionarios se puede hacer usando la función a continuación:

Esta función toma dos argumentos. El primero es el número aleatorio mínimo, y el segundo es el máximo.

Por ejemplo, si especifica - getRandomArbitrary (1, 10), como resultado obtendrá un número en la región de 1 y 10, que se verá más o menos así: 5.63726842 o como 9.27647264 y así sucesivamente.

Si necesita un número entero, vea la función a continuación.

Cómo generar números aleatorios en JavaScript

Los números aleatorios se usan a menudo en casos como, por ejemplo. no importa Problema con el método Math.random ()lo que usaremos es que genera un número decimal largo, casi inútil, de la forma 0.77180239201218795. Aquí aprenderá a usar otros métodos del objeto. Matemáticas para obtener un número entero en un rango dado.

El artículo asume que está familiarizado con HTML y JavaScript lo suficientemente bien como para seguir las instrucciones del artículo. De lo contrario, hay muchos sitios donde puede recibir capacitación. Con un poco de esfuerzo, puede volver a este artículo después de un tiempo.

Generación básica

La forma más fácil de obtener un número aleatorio es con un método Math.random ()integrado en javascript.

Math.random () siempre devuelve un número de coma flotante entre 0 y 1.

Técnicamente, el número que obtienes puede ser 0, pero nunca será exactamente 1.

Como se usa con suficiente frecuencia, Math.random () poner dentro de la función

función getRandom () <
return Math.random (),
>

El problema, por supuesto, es que la función siempre creará un número aleatorio dentro de un rango muy limitado. La mayoría de las otras recetas en esta página están diseñadas para resolver este problema.

Generación entre números: valores mínimos y máximos

Para agregar esta funcionalidad, necesitamos un poco de matemática.

función getRandomFloat (min, max) <
return Math.random () * (max - min) + min,
>
getRandomFloat (11, 101)
> 75.31898734299466

función getRandomInt (min, max) <
return Math.floor (Math.random () * (max - min)) + min,
>

getRandomInt (10, 20)
> 12

Lanzamiento de moneda (aleatorio verdadero o falso)

Si necesita obtener solo 0 o 1, use el siguiente código:

función coinToss () <
return Math.floor (Math.random () * 2),
>
coinToss (),
> 0

Si necesitas específicamente cierto o falso

función coinToss () <
return (Math.floor (Math.random () * 2) === 0),
>
coinToss (),
> verdadero

Si necesita asociar alguna palabra con los lados de la moneda

función coinFlip () <
return (Math.floor (Math.random () * 2) === 0)? "arriba": "abajo",
>
coinToss (),
> arriba

Correcta función aleatoria

Como puede ver en los ejemplos anteriores, sería bueno crear la función aleatoria correcta para usar en todos los objetivos enteros aleatorios.

La función de JavaScript siempre devuelve un número aleatorio entre min (incluido) y max (excluido):

La función de JavaScript siempre devuelve un número aleatorio entre min y max (ambos están incluidos):

Generación de excepciones

Para un rango limitado de enteros: cree una matriz de números que le gustaría dibujar y seleccione aleatoriamente.

var numPool =,
rand = numPool [Math.floor (Math.random () * numPool.length)],

Para algo más dinámico: agregue una matriz de enteros que desea excluir y una matriz vacía que contendrá el resultado de filtrar la primera matriz en la segunda.

var numPool =,
var excludePool =,
var filterPool = [],

Luego crea un bucle a través de la matriz numPoolcomprobar si hay un número aleatorio en la matriz de excepción excludePooly poner el resultado en una matriz piscina filtrada:

Finalmente, muestre un número aleatorio de la matriz filtrada

var rand = filterPool [Math.floor (Math.random () * filterPool.length)],

Generación de números aleatorios, no repetitivos

Para conjuntos pequeños de números: cree una matriz llena de elementos, mezcle aleatoriamente, coloque el resultado en una nueva matriz, luego obtenga los elementos barajados una vez:

var numPool =,

función aleatoria (numPool) <
para (var j, x, i = numPool.length, i, j = parseInt (Math.random () * i), x = numPool [- i], numPool [i] = numPool [j], numPool [j ] = x),
return numPool,
>,
var randomResult = shuffle (numPool),
while (randomResult.length> 0) <
console.log (randomResult.pop ()),
>

Para conjuntos de números más grandes: cree y complete la matriz con enteros aleatorios, rechazando cualquiera que se haya generado previamente:

var numReserve = []
while (numReserve.length

En el código de arriba numReserve lleno de 12 números aleatorios entre 0 y 1000. Los números se pueden obtener de la matriz.

Criptografía

Todos los métodos que se muestran arriba no serán suficientes para crear funciones criptográficamente seguras. Para esto podemos usar API de criptografía webcreando una matriz escrita:

var cryptoStor = new Uint16Array (8),

En este caso, creamos una matriz con 8 ranuras diferentes, cada una de las cuales puede contener un entero sin signo de 16 bits. Otras opciones incluyen Int8array, Uint8Array, int16Array, Int32array y Uint32Array.

Ahora llena la matriz con números aleatorios de cierto tipo

Los valores seleccionados se muestran en la consola:

> [43484, 57947, 46691, 49849, 24272, 11827, 28203, 17423]

API de criptografía web Tiene buen soporte en los navegadores modernos, aunque algunos necesitan ser prefijados.

¡La copia de materiales está permitida solo con la indicación del autor (Mikhail Rusakov) y un enlace directo indexado al sitio (http://myrusakov.ru)!

Agrégame como amigo VKontakte: http://vk.com/myrusakov.
Si desea hacer una evaluación para mí y mi trabajo, escríbala en mi grupo: http://vk.com/rusakovmy.

Si no desea perderse nuevos materiales en el sitio,
entonces puedes suscribirse a las actualizaciones: Suscribirse a las actualizaciones

Si tiene alguna pregunta o desea hablar sobre este artículo, puede dejar un comentario al final de la página.

Recomienda este artículo a tus amigos:

Si le gustó el sitio, publique un enlace (en su sitio, en el foro, en contacto):

Se ve así:

  • Código BB del enlace para foros (por ejemplo, puede ponerlo en la firma):
  • Comentarios (4):

    Hola ¿Puede una pregunta estar fuera de tema?

    Por supuesto que puedes! Pero pregúntelo, por favor, al servicio de soporte: http://support.myrusakov.ru/

    Gracias La próxima vez, ya respondió a javascript.ru

    Genial Me alegro por ti!

    Debe iniciar sesión para agregar comentarios.
    Si no se ha registrado en el sitio, primero regístrese.

    Copyright © 2010-2019 Rusakov Mikhail Yuryevich. Todos los derechos reservados

    Los 10 mejores ejemplos

    SchoolsW3 está optimizado para capacitación, pruebas y capacitación. Los ejemplos simplifican y mejoran la lectura y la comprensión básica. Los libros de texto, los libros de referencia, los ejemplos se revisan constantemente, para evitar errores, no es posible garantizar la exactitud de todo el contenido. Al usar este sitio, usted acepta leer y aceptar los términos de uso, cookies y Política de privacidad. Copyright 1999-2019 Todos los derechos reservados.
    Funciona en el estilo de W3.CSS.

    Números enteros

    Para hacer un número entero en JavaScript, puede usar la siguiente función:

    Esta función toma los mismos valores que la función anterior. La única diferencia es que devuelve un entero aleatorio.

    Por ejemplo, si necesita un número aleatorio entre 50 y 100, puede obtenerlo así: getRandomInt (50, 100) y esto le devolverá un número entero (por ejemplo: 55 o 90, etc.).