jueves, 17 de noviembre de 2016

Función Math.random() y variantes


       La función Math.random() da un valor dentro del intérvalo [0, 1). Por ejemplo:

       Math.random()  -->  0,526862017...

       La función Math.trunc() sirve para dar un valor de un intérvalo [min, max), pero truncando todos los decimales del valor. Como los decimales no juegan ningún rol en la función, no puede llegar a su valor máximo (pero sí puede llegar a su mínimo. Por ejemplo:

       function trunc(min, max)
       {
       var number=Math.trunc(Math.random()*(max-min+1)+min)
       return number;
       }

       trunc(0, 5)
       --> 2,553452624... --> 2

       La función Math.ceil() sirve para dar un valor de un intérvalo (max, min], pero los números con decimales serán apriximados al siguiente número. Por lo tanto, la función puede dar el valor máximo, pero no el mínimo. Por ejemplo:

       function ceil(min, max)
       {
       var number=Math.ceil(Math.random()*(max-min+1)+min)
       return number;
       }

       ceil(0, 5)
       --> 2,553452624... --> 3

       La función Math.floor() sirve para dar un valor de un intérvalo [max, min), pero los números con decimales serán apriximados al número anterior. Por lo tanto, sí puede dar el mínimo, pero no puede dar el máximo. Por ejemplo:

       function floor(min, max)
       {
       var number=Math.floor(Math.random()*(max-min+1)+min)
       return number;
       }

       floor(0, 5)
       --> 2,553452624... --> 2

jueves, 3 de noviembre de 2016

Error en la posición de los diccionarios al asignar los palos en una baraja


       Redactando el código para crear una baraja a partir de un array de cuatro diccionarios (uno para cada palo) me topé con un error. No fue otro que la superposición de los cuatro palos. Éste fue el código fallido:

var baraja=[]
for (var c=0; c<=12; c=c+1)

{
var corazones={palo:"c", valor:(c+1)}
baraja[c]=corazones
}
for (var p=0; p<=12; p=p+1)
{
var picas={palo:"p", valor:(p+14)}
baraja[p]=picas
}
for (var d=0; d<=12; d=d+1)
{
var diamantes={palo:"d", valor:(d+27)}
baraja[d]=diamantes
}
for (var t=0; t<=12; t=t+1)
{
var treboles={palo:"t", valor:(t+40)}
baraja[t]=treboles
}

       Después, me di cuenta de que era subnormal y que el error estaba en la propia posición de los diccionarios, ya que tal y como estaba escrito, todos los palos se superponían y acababa únicamente con los tréboles. Éste es el código ya corregido:

var baraja=[]
for (var c=0; c<=12; c=c+1)

{
var corazones={palo:"c", valor:(c+1)}
baraja[c]=corazones
}
for (var p=0; p<=12; p=p+1)
{
var picas={palo:"p", valor:(p+1)}
baraja[p+13]=picas
}
for (var d=0; d<=12; d=d+1)
{
var diamantes={palo:"d", valor:(d+1)}
baraja[d+26]=diamantes
}
for (var t=0; t<=12; t=t+1)
{
var treboles={palo:"t", valor:(t+1)}
baraja[t+39]=treboles
}