martes, 15 de diciembre de 2020

Números aleatorios con JavaScript

Vamos a modificar el corazón de los números de JavaScript. Accedemos al Prototype del objeto Number, que es el que controla a todos los números que se utilicen con JavaScript, agregándole una funcionalidad: .cualquiera()

Numero = Number.prototype ;

Numero.cualquiera = function() {
// this es el número en cuestión
return Math.random() * this ;
}

; (5).cualquiera() // genera un número cualquiera entre 0.0000 y 4.9999

Numero.entero = function() {
if( this > 0 ) return Math.floor( this ) ;
return Math.ceil( this ) ;
}

; (5).cualquiera().entero() // genera un número cualquiera entre 0, 1, 2, 3 y 4 (5 en total)

Cuando accedemos al prototype de un objeto, this será la palabra clave que refiera al objeto concreto en cuestión. Recordemos que el prototype es la esencia del objeto (la class).

Como el término Numero es un alias para Number.prototype, cuando hacemos Numero.cualquiera = function(){ ...} en realidad estamos haciendo Number.prototype.cualquiera = function() { ... }

Con esto agregamos una nueva funcionalidad, habilidad o método a los números. Así el término (5).cualquiera() nos generará un número aleatorio decimal entre los valores 0 (0,0000) y casi 5 (4,9999).

Además hemos agregado la habilidad de obtener el valor entero de cualquier número con decimales, mediante Numero.entero.

Entonces, cuando tenga que generar un número aleatorio para simular un dado, en el lugar de tener que hacer lo siguiente:

Math.floor( Math.random()*6 ) + 1 // Genera un valor entre 1, 2, 3, 4, 5 y 6

Haremos mejor lo siguiente, que además para el que recién comienza a programar, le será más intuitivo:

(6).cualquiera().entero() + 1