Contactos

JQUERY NÚMERO ALEATORIO DEL RANGO. Se gestiona al azar en JavaScript. Arreglando el número en el rango

Después de los generadores, un número aleatorio con un programa de computadora, todavía se considera un número aleatorio si el número seleccionado es parte o lleno de fuente. Pero si fue cambiado, entonces matemáticas. no lo aceptes como un número aleatorio, y pueden llamarlo un número sesgado. Pero si está desarrollando un programa para una tarea simple, no se considerará. Pero si está desarrollando un programa para generar un número aleatorio para un material valioso, como un programa de lotería o un juego de juego, entonces su programa será rechazado por el manual si no lo considera este caso.

Así que para aquellos que tienen esas personas, aquí está mi oferta:.

Generación de números aleatorios con matemath.random () (digamos que n)

Ahora, para, el piso n * 10 es su respuesta y, si es necesario, el piso n * 100 es su respuesta y así sucesivamente.

Ahora ingrese su papel:

Pediste por números entre un rango específico. (En este caso, se desplaza en este rango. - Habiendo aceptado el número de, convirtiendo el cubo, agregará, pero aún así, este es un caso aleatorio, si y solo si la muerte de lo imparcial).

Así que considere su rango \u003d\u003d\u003e el número de elementos en el rango \u003d 247 - 78 + 1 \u003d 170; (Dado que ambas fronteras incluyen

/ * MTHOD 1: * / VAR I \u003d 78, J \u003d 247, K \u003d 170, A \u003d, B \u003d, C, D, E, F, L \u003d 0; para (; yo<= j; i++){ a.push(i); } while(l < 170){ c = Math.random()*100; c = Math.floor(c); d = Math.random()*100; d = Math.floor(d); b.push(a[c]); e = c + d; if((b.length != k) && (e < k)){ b.push(a[e]); } l = b.length; } console.log("Method 1:"); console.log(b); /*Method 2:*/ var a, b, c, d = , l = 0; while(l < 170){ a = Math.random()*100; a = Math.floor(a); b = Math.random()*100; b = Math.floor(b); c = a + b; if(c <= 247 || c >\u003d 78) (d.push (c);) otra cosa (d.push (a);) l \u003d d.length; ) Console.log ("Método 2:"); Console.log (d);

Nota: .. En el método único, el primero creé una matriz que contiene los números que necesita y luego los colocamos al azar en otra matriz en los dos métodos, generan números al azar y verifique si están en la banda que necesitamos. , y luego ponlo en una matriz. Aquí generé dos números aleatorios y usé su cantidad total para maximizar la velocidad del programa, minimizando la frecuencia de fallas, recibiendo un número útil. También recomendaré mi primer método para generar números aleatorios en un rango específico.

En ambos métodos, su consola e mostrará el resultado. (Presione F12 en Chrome para abrir la consola)

Su Math.random () La función devuelve un número pseudo-aleatorio de punto flotante en el rango 0-1 (incluido de 0, pero no 1) con una distribución aproximadamente uniforme sobre ese rango, que puede escalar a su rango deseado. La implementación selecciona la semilla inicial al algoritmo de generación de números aleatorios; No se puede elegir ni reiniciar por el usuario.

Math.random () no es. Proporcionar números aleatorios seguros criptográficamente. No los use para nada relacionado con la seguridad. Utilice la web Crypto API Asstead, y más preselente el método.

Sintaxis

Math.random ()

Valor de retorno.

Un número de punto flotante, pseudo-aleatorio entre 0 (inclusive) y 1 (exclusivo).

Ejemplos.

Tenga en cuenta que como números en JavaScript son los números de punto flotante de IEEE 754 con un comportamiento de todo el mundo más cercano, los rangos reclamaron las funciones a continuación (excluyendo la única para matemáticas. (2 53 o superior), es posible en extremadamente. Casos raros para calcular el límite superior generalmente excluido.

Obtención de un número aleatorio entre 0 (inclusive) y 1 (exclusivo)

Función getrandom () (devolver matemath.random ();)

Obtención de un número aleatorio entre dos valores

Este ejemplo devuelve un número aleatorio entre los valores especificados. El valor devuelto no es inferior a (y puede ser igualmente igual), y es menor que (y no igual) máx.

Función GetRandomarBerry (MIN, MAX) (devuelva MATH.RANDOM () * (MAX - MIN) + MIN;)

Obtención de un entero aleatorio entre dos valores

Este ejemplo devuelve un azar. entero Entre los valores especificados. El valor no es más inferior a que Thanner (o el siguiente entero mayor que MIN si MIN no es un número entero), y es menor que (pero no igual a) máx.

Función getrandomint (min, max) (min \u003d math.ceil (min); max \u003d math.floor (max); devolver matemath.floor (math.random () * (max - min) + min; // el máximo Es exclusivo y el mínimo es inclusivo)

Puede ser tentador usar matemáticas. () Para lograrlo, pero hacerlo, lo que le haría que sus números aleatorios sigan una distribución no uniforme, que puede no ser aceptable para sus necesidades.

Conseguir un entero aleatorio entre dos valores, inclusive

Mientras que la función GetRandomint () anterior es inclusiva al mínimo, es exclusivo al máximo. ¿Qué sucede si necesita que los resultados sean inclusivos en el mínimo y el máximo? La función GetRandomintInClusive () a continuación lo logra.

Función getrandomintinclusive (min, max) (min \u003d math.ceil (min); max \u003d math.floor (max); devolver matemath.floor (math.random () * (max - min + 1)) + min; // El máximo es incluido y el mínimo es inclusivo).

Especificaciones.

Especificación Estado. Comentario
Ecmascript 1st Edition (ECMA-262) Estándar. Definición inicial. JavaScript 1.0 (solo UNIX) / JavaScript 1.1 (todas las plataformas).
Ecmascript 5.1 (ECMA-262)
Estándar.
Ecmascript 2015 (6ª edición, ECMA-262)
La definición de "matemath.random" en esa especificación.
Estándar.
Borrador ÚLTIMO DE ECMASCRIPT (ECMA-262)
La definición de "matemath.random" en esa especificación.
SEQUÍA.

Compatibilidad del navegador

La tabla de compatibilidad en esta página se genera a partir de datos estructurados. Si le gustaría contribuir a los datos, consulte https://github.com/mdn/browser-compat-data y envíenos una solicitud de extracción.

Actualizar datos de compatibilidad en GitHub

Escritorio.MóvilServidor
Cromo.Borde.Firefox.Explorador de Internet.Ópera.Safari.Webview de Android.Chrome para AndroidFirefox para AndroidOpera para AndroidSafari en iOS.Samsung internetNodo.js.
AleatorioCHROMO APOYO COMPLETO SISoporte completo de borde 12Soporte completo de Firefox 1Es decir, soporte completo siOPERA APOYO FULLES SISafari Soporte completo siWebView Android Soporte completo SíSoporte completo de Android Chrome SIFirefox Android Soporte completo 4Opera Android Soporte completo siSafari iOS APOYO FULLES SISamsung Internet Android soporte completo sinODEJS APOYO FULLES SI
Muy a menudo los cálculos en JavaScript no dan, no los resultados que queremos. Por supuesto, podemos hacerlo con cualquier cosa, redondeando en un lado grande o más pequeño, establezca los rangos, corte los números innecesarios a un cierto número de lugares decimales, todo depende de lo que quiera hacer en el futuro con este número.

¿Por qué necesitas redondeo?

Uno de los aspectos curiosos de JavaScript es que en realidad no almacena enteros, trabajamos inmediatamente con números de puntos flotantes. Esto, en combinación con el hecho de que muchos valores fraccionarios no se pueden expresar mediante el número final de signos decimales, podemos obtener tales resultados en JavaScript:

0.1 * 0.2; > 0.020000000000000004 0.3 - 0.1 > 0.19999999999999998
Para fines prácticos, esta inexactitud no importa, en nuestro caso, estamos hablando de error en los dólares de quintillion, sin embargo, alguien puede decepcionar. Podemos obtener un resultado ligeramente extraño y al trabajar con números que son valores de válvulas, porcentaje o tamaños de archivos. Para corregir estas inexactitudes, solo necesitamos poder redondear los resultados, mientras que es suficiente para establecer la precisión decimal.

El redondeo de los números tiene una aplicación práctica, podemos manipular el número en un cierto rango, por ejemplo, queremos redondear el valor al entero más cercano, y no trabajar solo con la parte decimal.

Redondeando números decimales

Para cortar el número decimal, use el método tofixed o toprecisión. Ambos son tomados por un solo argumento que determina, respectivamente, cuántos números significativos (es decir, el número total de números utilizados entre el número) o después de un punto y coma (cantidad después del punto decimal) debe incluir el resultado:
  1. Si el argumento no está definido para TOFIXED (), entonces, por defecto, será cero, lo que significa 0 puntos después de la coma, el argumento tiene un valor máximo igual a 20.
  2. Si el argumento no se especifica para TOPRECISION, el número permanece intacto
Deje que Randnum \u003d 6.25; randnum.tofixed (); \u003e "6" math.pi.toprecision (1); \u003e "3" Randnum \u003d 87.335; Randnum.tofixed (2); \u003e "87.33" Randnum \u003d 87.337; Randnum.toprecision (3); \u003e "87.3"
Los métodos TOFIXED () y TOPRECISION () devuelven una representación de cadena del resultado, no un número. Esto significa que al sumar el valor redondeado con Randnum, se realizarán las filas concatenadas, y no la cantidad de números:

Deje que Randnum \u003d 6.25; Deje redondeado \u003d Randnum.tofixed (); // "6" console.log (Randnum + redondeado); \u003e "6.256"
Si desea que el resultado tenga un tipo de datos numéricos, deberá aplicar ParsFloat:

Deje que Randnum \u003d 6.25; Deje redondeado \u003d parsefloat (Randnum.tofixed (1)); Console.log (redondeado); \u003e 6.3.
Tenga en cuenta que 5 valores están redondeados, con la excepción de casos raros.

Los métodos tofixed () y TOPRECISION () son útiles, porque no solo pueden cortar la parte fraccional, sino que también complementan los signos después de la coma, que es conveniente cuando se trabaja con moneda:

Deje que Wholenum \u003d 1 deje que los dólares \u003d wholenum.tofixed (2); Console.log (Dollarscents); \u003e "1.00"
Condición Tenga en cuenta que TOPRECISIÓN dará el resultado en un registro exponencial si el número de enteros es mayor que la precisión misma:

Deje num \u003d 123.435 num.toprecision (2); \u003e "1.2e + 2"

Cómo evitar errores de redondeo con números decimales

En algunos casos, Tofixed y TopRecision rodean el valor 5 a un lado más pequeño, y en una gran:

Deje numerdecer \u003d 1.005; numestT.tofixed (2); \u003e "1.00"
El resultado del cálculo anterior fue 1.01, y no 1. Si desea evitar un error similar, podemos usar la solución propuesta por Jack l Moore, que utiliza números exponenciales para calcular:

Función redonda (número de retorno (matemáticas (valor (valor + e "+ decimales) +" E - "+ decimales);)
Ahora:

Redondo (1.005.2); \u003e 1.01
Si desea una solución más confiable que la solución que se muestra arriba, puede ir a MDN.

Machine Epsilon Rounding

El método alternativo de redondear los números decimales se introdujo en el ES6. La redondeo de la máquina Epsilon proporciona un límite de error razonable al comparar dos números de punto flotante. Sin redondeo, las comparaciones pueden dar resultados como el siguiente:

0.1 + 0.2 \u003d\u003d\u003d 0.3\u003e FALSO
Utilizamos matemath.epsilon en nuestra función para obtener una comparación correcta:

EPEJO DE LA FUNCIÓN (X, Y) (Devuelve matemath.abs (x - y)< Number.EPSILON * Math.max(Math.abs(x), Math.abs(y)); }
La función toma dos argumentos: el primer cálculo actual, el segundo es el resultado esperado. Devuelve una comparación de dos:

Equipo (0.1 + 0.2, 0.3)\u003e Verdadero
Todos los navegadores modernos ya están respaldando las funciones matemáticas ES6, pero si desea obtener soporte en navegadores, como IE 11, use Polyills.

Cortar la parte fraccionada

Todos los métodos presentados anteriormente son capaces de redondear los números decimales. Para simplemente cortar el número hasta dos signos después de la coma, primero debe multiplicarlo por 100, y luego el resultado obtenido ya está dividido por 100:

Función truncada (NUM) (retorno math.trunc (NUM * 100) / 100;) truncado (3.1416)\u003e 3.14
Si desea adaptar el método para cualquier número de punto y coma, puede usar una denegación doble doble:

Función truncada (deja a numpowerconverter \u003d math.pow (10, decimalplaces); retorno ~~ (numpowerconverter) / numpowerconverter;)
Ahora:

Deje que RANDINT \u003d 35.874993; Truncado (RANDINT, 3); \u003e 35.874.

Redondeando al número más cercano

Para redondear el número decimal al número más cercano en más o en un lado más pequeño, dependiendo de lo que estemos más cerca, use math.round ():

Matemáticas (4.3)\u003e 4 matemath.round (4.5)\u003e 5
Tenga en cuenta que "la mitad del valor", 0.5 se redondea en una dirección grande de acuerdo con las reglas de las matemáticas.

Redondeando a un entero más pequeño al más cercano

Si desea redondear siempre en un lado más pequeño, use matemath.floor:

Matemáticas.floor (42.23); \u003e 42 math.floor (36.93); \u003e 36.
Tenga en cuenta que el redondeo en un lado más pequeño funciona para todos los números, incluso para negativos. Imagine un rascacielos con un número infinito de pisos, incluidos los pisos de bajo nivel (que representan números negativos). Si está en el ascensor en el nivel inferior entre 2 y 3 (que es un valor -2.5), Math.floor le entregará a -3:

Matemáticas.floor (-2.5); \u003e -3.
Pero si desea evitar una situación similar, use math.trunc, admitido en todos los navegadores modernos (excepto IE / EDGE):

Math.trunc (-41.43); \u003e -41
Encontrará PolyFill en MDN para proporcionar soporte de matemáticas en los navegadores e IE / Edge.

Redondeando a más al entero más cercano

Por otro lado, si siempre necesita redondear hasta la mayor, usar matemáticas. Nuevamente, recuerde el ascensor sin fin: Math.Ceil siempre subirá, sin importar si el número es negativo o no:

MATH.CEIL (42.23); \u003e 43 Math.Ceil (36.93); \u003e 37 Math.Ceil (-36.93); \u003e -36

Redondeo a un número más grande / menor

Si queremos redondear hasta el número más cercano, varias 5, la forma más fácil de crear una función que divide el número en 5 redondea, y luego lo multiplica a la misma cantidad:

Función RoundTo5 (NUM) (return math.round (NUM / 5) * 5;)
Ahora:

Roundto5 (11); \u003e 10.
Si desea redondear hasta múltiples su valor, usamos una función más general pasando el valor inicial y múltiple a ella:

Función RoundTomultiple (NUM, múltiple) (devuelva matemath.round (NUM / múltiple) * múltiple;)
Ahora:

Deja que InitialNumberNumber \u003d 11; Dejar múltiple \u003d 10; RoundTomultiple (Initialnumnumn, múltiple); \u003e 10;

Arreglando el número en el rango

Hay muchos casos en los que queremos obtener el valor de x acostado dentro del rango. Por ejemplo, es posible que podamos necesitar un valor de 1 a 100, pero al mismo tiempo recibimos un valor de 123. Para solucionarlo, podemos usar el mínimo (devuelve el número más pequeño del número) y el máximo ( Devuelve el más grande de cualquier número múltiple). En nuestro ejemplo, el rango de 1 a 100:

Deje que Lowbound \u003d 1; Deje que HighBound \u003d 100; Deja que Numinput \u003d 123; Dejar sujetar \u003d matemath.max (Lowbound, Math.min (Numinput, Highbound)); Console.log (sujetado); \u003e 100;
Nuevamente, podemos reutilizar la operación y envolverlo todo en la función, usamos la solución propuesta por Daniel X. Moore:

Number.prototype.clamp \u003d Función (Min, MAX) (devuelva Math.min.min (math.max (esto, min), max););
Ahora:

Numinput.clamp (Lowbound, HighBound); \u003e 100;

Redondeo gaussiano

El redondeo gaussiano, también conocido como redondeo bancario, es que el redondeo para este caso ocurre en el negro más cercano. Este método de redondeo funciona sin un error estadístico. La mejor solución fue propuesta por Tim Down:

Función Gaussround (Sea D \u003d Decimalplaces || 0, m \u003d matemath.pow (10, d), n \u003d + (d? Num * m: num) .tofixed (8), i \u003d math.floor (n), f \u003d n - i, e \u003d 1e-8, r \u003d (f\u003e 0.5 - e && f< 0.5 + e) ? ((i % 2 == 0) ? i: i + 1) : Math.round(n); return d ? r / m: r; }
Ahora:

Gaussround (2.5)\u003e 2 Gaussround (3.5)\u003e 4 Gaussround (2.57,1)\u003e 2.6
Decimal Iniciar sesión en CSS:

Dado que JavaScript se usa a menudo para crear una conversión posicional de elementos HTML, puede preguntarse qué sucede si generamos valores decimales para nuestros artículos:

#Box (ancho: 63.667731993px;)
Buenas noticias es que los navegadores modernos tendrán en cuenta los valores decimales en un modelo de bloque, incluso en unidades de porcentaje o píxeles de medición.

Clasificación

Muy a menudo, tenemos que ordenar cualquier elemento, por ejemplo, tenemos una variedad de registros de juegos, mientras que deben organizarse como orden descendente de jugadores. Desafortunadamente, el método estándar () tiene algunas restricciones sorprendentes: funciona bien con palabras de inglés usadas con frecuencia, pero inmediatamente se rompe en una reunión con números, caracteres o palabras únicos en la mayor parte.

Ordenar en orden alfabético

Parecería que la clasificación de la matriz está alfabéticamente debería ser la tarea más sencilla:

Deja que Fruit \u003d ["Squash Butternut", "albaricoque", "Cantalupo"]; fruta.sort (); \u003e "Albaricoque", "Squash Butternut", "Cantalupo"]
Sin embargo, nos enfrentamos al problema tan pronto como uno de los elementos está en mayúsculas:

Deja que Fruit \u003d ["Squash Butternut", "APROB", "Cantalope"]; fruta.sort (); \u003e "Cantalupo", "APROB", "Squash Butternut"]
Esto se debe al hecho de que, de forma predeterminada, el clasificador compara el primer símbolo presentado en Unicode. Unicode es un código único para cualquier símbolo, independientemente de la plataforma, independientemente del programa, independientemente del idioma. Por ejemplo, si mira a través de la tabla de códigos, el carácter "A" es U + 0061 (en el sistema hexadecimal 0x61), mientras que el símbolo "C" tiene el código U + 0043 (0x43), que va antes en la tabla Unicode que El símbolo "A".

Para ordenar una matriz que pueda contener registros mixtos de las primeras letras, necesitamos convertir todos los elementos para entrar temporalmente en el registro inferior, o determinar su orden de clasificación utilizando el método localecompare () con algunos argumentos. Como regla general, para tal caso, es mejor crear inmediatamente una función para uso repetido:

Función AlphAsort (ARR) (devuelva A.Localecompare (B, ES ", (" sensibilidad ":" Base ")););) Deje que fruit \u003d [" Squash Butternut "," albaricoupe "," Cantalupo "]; AlphAsort (Fruta)\u003e
Si desea obtener una matriz ordenada en el orden alfabético inverso, simplemente cambie las posiciones A y B a la función:

FUNCIÓN ALPHASORT (ARR) (Retorno B.Localecompare (A, EN ", (" Sensibilización ":" Base ")););) Deja que Fruit \u003d [" Squash Butternut "," albaricoupo "," Cantalupo "]; AlphAsort (Fruta)\u003e ["Cantalupo", "Squash Butternut", "albaricoque"]
Vale la pena prestar atención a esa atención localEcompare con los argumentos, todavía es necesario recordar que es compatible con IE11 +, para versiones anteriores, por ejemplo, podemos usarlo sin argumentos, y en el registro inferior:

Cases de función (ARR) (Return a.tolowercase (). Localecompare (b.tolowercase ()););) Deja que fruit \u003d ["Squash Butternut", "albaricoupe", "Cantalupo"]; CaseTort\u003e [Albaricoque, "Squash Butternut", "Cantalupo"]

Clasificación numérica

Todo esto no se aplica al ejemplo de los cuales hablamos sobre la matriz anterior de los registros del juego. Con algunas matrices numéricas, la clasificación funciona perfectamente, pero en algún momento el resultado puede ser impredecible:

Deja que las puntuaciones altas \u003d; highscores.sort (); \u003e
El hecho es que el método ordenado () produce una comparación lexicográfica: y esto significa que los números se convertirán a una cadena y se llevarán a cabo comparaciones nuevamente al asignar el primer carácter de esta cadena en los símbolos de la tabla Unicode. Por lo tanto, debemos determinar su orden de clasificación:

Deja que las puntuaciones altas \u003d; Highscores.Sort (devuelve A - B;)); \u003e
Nuevamente, para ordenar los números en el orden inverso, cambie las posiciones A y B a la función.

Ordenar la estructura similar a Json

Y, finalmente, si tenemos una estructura de datos similar a JSON, representada como una matriz de registros de juegos:

Deje que las puntuaciones \u003d [("nombre": "Daniel", "Puntuación": 21768), ("Nombre": "Michael", "Puntuación": 33579), ("Nombre": "Alison", "Puntuación": 38395 )]
En ES6 +, puede usar las funciones de flecha:

Scores.sort ((a, b) \u003d\u003e b.score - a.score);
Para los viejos navegadores que no tienen tal soporte:

Scores.sort (devuelve A.Score - B.Score));
Como puede ver, la clasificación en JavaScript es una cosa bastante obvia, espero que estos ejemplos hagan fácil para la por vida.

Trabajar con funciones de potencia

El ejercicio es una operación, originalmente definida como resultado de múltiples multiplicaciones de un número natural en sí mismo, una raíz cuadrada del número A es un número dado a un cuadrado. Con estas funciones, podríamos disfrutar constantemente en la vida cotidiana en las lecciones de matemáticas, incluso cuando calculan áreas, volúmenes o incluso modelos físicos.

En JavaScript, una función de potencia se representa como matemáticas. Puro (), en el nuevo estándar ES7, se presentó un nuevo operador de ejercicio al grado: "* *".

Erendar en grado

Para construir un número en el grado N-UY, use la función Math.pow (), donde el primer argumento es el número que se construirá en un grado, el segundo argumento es un indicador del grado:

Matemáticas.Puro (3.2)\u003e 9
Dicha forma de medios de grabación 3 en un cuadrado, o 3 × 3, lo que resulta en un resultado 9. Se puede dar otro ejemplo, por supuesto:

MATH.POW (5.3); \u003e 125.
Es decir, 5 en Cuba, o 5 × 5 × 5, igual a 125.

ECMASCRIP 7 es la siguiente versión de JavaScript, en principio, podemos usar el nuevo operador de ejercicios propuesto en un grado - * *, tal forma de grabación puede ser más visual:

3 ** 2 > 9
En este momento, el soporte para este operador es bastante limitado, por lo que no se recomienda usarlo.

La función poderosa puede ser útil en diversas situaciones. Un ejemplo simple, calculando el número de segundos en una hora: Math.Powpow (60.2).

Raíz cuadrada y cúbica

Math.sqrt () y math.cbrt () son opuestos a las funciones de Math.pow (). Como recordamos, la raíz cuadrada del número A es un número que le da a un cuadrado se erige.

Math.SQRT (9)\u003e 3
Al mismo tiempo, la raíz cúbica del número A es un número que le da a un cubo.

Math.cbrt (125)\u003e 5
Math.CBRT () se introdujo recientemente en la especificación de JavaScript recientemente, y por lo tanto respaldada solo en los navegadores modernos: Chrome 38+, Firefox y Opera 25+ y Safari 7.1+. Sin embargo, notará que Internet Explorer le falta en esta lista, encontrará PolyFill en MDN.

Ejemplos

Por supuesto, podemos usar y no entero en una de estas funciones:

Matemáticas.Puro (1.25, 2); \u003e 1.5625 math.cbrt (56.57)\u003e 3.8387991760286138
Tenga en cuenta que funciona bastante bien cuando se usa valores negativos de argumentos:

MATH.POW (-5.2)\u003e 25 matemath.pow (10, -2)\u003e 0.01
Sin embargo, para una raíz cuadrada no funcionará:

Math.sqrt (-9)\u003e nan
Desde el análisis matemático, sabemos que bajo el número imaginario, entienden las raíces cuadradas de los números negativos. Y esto puede llevarnos a otra técnica de trabajar con números complejos, pero esta es otra historia.

Puede usar valores fraccionarios en matemath.pow () para encontrar números de raíces cuadrados y cúbicos. La raíz cuadrada usa un indicador 0.5:

Matemáticas.pow (5, 0.5); // \u003d math.sqrt (5) \u003d 5 ** (1/2)\u003e 2.23606797749979
Sin embargo, debido a los caprichos de puntos flotantes, no puede asumir con precisión el resultado correcto:

Matemáticas.pow (2.23606797749979,2)\u003e 5.0000000000001
En tales situaciones, tendrá que recurrir a los signos de corte en números o redondear a cualquier valor.

Algunos, por razones incomprensibles en JavaScript confunden la función Math.pow () con math.exp (), que es una función exponencial para los números en su conjunto. Nota: En inglés, el indicador "exponente" se traduce como "exponente", por lo que se refiere más bien a la habla inglesa, aunque hay nombres de indicadores alternativos como el índice, la potencia.

Constantes matemáticas

Trabajar con matemáticas en JavaScript se facilita con una serie de constantes incorporadas. Estas constantes son las propiedades del objeto matemático. Vale la pena señalar que las constantes están escritas en mayúsculas, y no la notación de camellas.

Solo los usuarios registrados pueden participar en la encuesta. , de nada.

Etiquetas: agregar etiquetas

Técnicamente, el término "generador numérico aleatorio" es absurdo, ya que los números en sí mismos no son aleatorios. Por ejemplo, 100 es un número aleatorio? Y 25? De hecho, este término significa que esto es lo que aparece la secuencia de números al azar se crea. Esto genera una pregunta más difícil: ¿Qué es una secuencia de números aleatorios? La única respuesta correcta es: una secuencia de números aleatorios es una secuencia en la que todos los elementos no están relacionados. Esta definición conduce a una paradoja de este tipo que cualquier secuencia puede ser aleatoria y no aleatoria, dependiendo de cómo se obtiene esta secuencia. Por ejemplo, la siguiente línea de números.
1 2 3 4 5 6 7 8 9 0
Se obtuvo imprimiendo la fila superior del teclado en orden, por lo tanto, la secuencia no puede considerarse generada al azar. Pero cómo ser si obtienes la misma secuencia, eliminando las pelotas de tenis numeradas del barril. En este caso, ya es al azar la secuencia generada. Este ejemplo muestra que la posibilidad de una secuencia depende de cómo se obtuvo, y no de ella misma.

Recuerde que la secuencia de números generados por la computadora es determinista: cada número, excepto el primero, depende de los números anteriores. Técnicamente, esto significa que solo la computadora puede generar la secuencia quásónica de números, es decir, De hecho, no son verdaderamente aleatorios. Sin embargo, esto es suficiente para la mayoría de las tareas y tales secuencias para la simplicidad se denominarán aleatorios. Un método muy interesante fue desarrollado por John Fondo Neuman; A menudo se llama RMS. En este método, el número aleatorio anterior se construye en un cuadrado, y luego los números medios se liberan del resultado. Por ejemplo, si crea números de tres dígitos, y el número anterior fue 121, la construcción del cuadrado da el resultado 14641. La selección de tres dígitos promedio proporciona el siguiente número aleatorio 464. La desventaja de este método es que tiene Un período muy corto de repetición, llamado ciclo. Por esta razón, este método no se usa hoy. Los métodos modernos para generar números aleatorios son mucho más complicados.

Números aleatorios en PHP

Hay dos grupos de funciones con números aleatorios en PHP. Puramente externamente, se pueden distinguir por el prefijo MT_ en todas las funciones de uno de los grupos.

Funciones obsoletas
Función RAND. Devuelve un número entero de cero al valor RAND_MAX (que es igual a 32767). Puede tener dos parámetros de enteros opcionales: si se especifican, entonces se genera un número aleatorio desde el primer parámetro al segundo.

Echo rand (); Echo rand (1,100); // Dar un número aleatorio de 1 a 100

Función de Srand. Establece la secuencia de números aleatorios emitidos por la función RAND. Tiene un parámetro completo, con diferentes valores de este parámetro RAND producirá diferentes secuencias de números. La función SRAND es suficiente para llamar solo una vez antes de todos los desafíos de la función RAND. Ejemplo de uso:

Srand (1288); // Inicialización del generador de números aleatorios para ($ i \u003d 0; $ i<5;$i++){ echo rand(); echo "
"; }

¡Atención! A partir de la versión PHP 4.2.0, no necesita causar SRAND (): PHP lo hace automáticamente.
Función GetRandmax (). Devuelve el valor del número aleatorio máximo (32767).

Funciones del segundo grupo (con el prefijo MT_)
Sus nombres y acciones son similares a las características del primer grupo - MT_RAND, MT_SRAND y MT_GETRANDMAX. La principal diferencia es que los números aleatorios se toman de un rango más amplio: del 0 al 2 de 19937 - 1. Además, estas funciones funcionan significativamente más rápido que los análogos antiguos, ya que el generador de números aleatorios es utilizada por la Mersenne Twister, desarrollada en 1997 por japonés. científicos. De ahí el prefijo MT_ (Mersenne Twister).
Ejemplo de uso:

// emitimos un número aleatorio de 1000 a 2000 Echo MT_RAND (1000, 2000);

Números aleatorios en JavaScript

Número aleatorio en JavaScript Puedes generar con matemath.random (). Sin embargo, será un número fraccional en el rango de 0 a 1 (sin incluir 0 y 1). Para generar un entero aleatorio en el rango deseado, es necesario escribir su función

Descripción

Math.Random () Método devuelve un número pseudo-aleatorio entre 0 y 1.

El número pseudo-aleatorio se crea en el rango de 0 (inclusive) a 1 (exclusivamente), es decir, el número de retorno puede ser cero, pero siempre habrá menos de uno.

Para redondear el número de punto flotante al conjunto, puede usarlo, por ejemplo, por el método Math.floor ().

Sintaxis

Math.random ()

Valor de devolución

  • Número de punto flotante en el rango de 0 (inclusive) a 1 (exclusivamente).

MATHE.RANDOM () El método se utiliza principalmente para generar un número pseudo-aleatorio en un rango específico. Por ejemplo, necesitamos obtener un número en el rango de 50 a 100 (inclusive). Para hacer esto, tendremos que escribir el siguiente código:

Document.write (math.floor (math.random () * 51 + 50));

Considere en detalle cómo funciona nuestro ejemplo y por qué se usa tal forma de grabación. En primer lugar, debemos especificar el valor mínimo del rango deseado, en nuestro ejemplo, es el número 50. Ahora debemos obtener un número aleatorio, que, al agregar con el número 50, no excederá el número 100. Como sabemos por matemáticas, encontrar un componente desconocido se realiza restando de la suma de la denuncia conocida. 100 - 50: Obtenemos la diferencia 50. Ahora para verificar, este número nos acerca a nosotros o no, multiplíquelo para un posible número mínimo y máximo devuelto por Math.Random (). Multiplice Minimal 0.004704564176082244 * 50 \u003d 0.2 ... y el máximo 0.999999999746223 * 50 \u003d 49.9 ... y, por lo tanto, vemos que al multiplicar la diferencia para el número aleatorio máximo posible, como resultado, nos da toda una parte del número por unidad menos de lo necesario. Para corregir la situación, solo necesitamos agregar una unidad a 50, es decir,. 50 + 1 \u003d 51, ahora, si el número obtenido se multiplicó al máximo posible, el número de 50.9 será devuelto por el método de 50.9 ... - Esto es lo que necesitamos, después de la adición de números 50.9 + 50, obtenemos 100.9. Para redondear el número al conjunto, use el método Math.floor (). Por lo tanto, la fórmula para obtener el número deseado es la siguiente: MAX - MIN + 1. Reescribiré el ejemplo anterior:

Var max \u003d 100, min \u003d 50; Document.write (math.floor (math.random () * (max - min + 1) + min));

Esta fórmula es especialmente útil cuando no se conoce de antemano en qué rango es necesario obtener un número aleatorio.

Ejemplo

Nombre del documento

Número pseudo-aleatorio en el rango de 1 a 10.





¿Te gustó el artículo? Compártelo