Funciones Implícitas (Built-in) Numéricas - AWK


Aquí está una lista completa de funciones implícitas que trabajan con números:

int(x)
Esto te da la parte entera de x, truncado hacia 0. Esto produce el entero más cercado a x, localizado entre x y 0.
Por ejemplo, int(3) es 3, int(3.9) es 3, int(-3.9) es -3, y int(-3) es -3 también.
sqrt(x)
Esto te da la raíz cuadrada positiva de x. Devuelve un error si x es un número negativo. Por lo tanto sqrt(4) es 2.
exp(x)
Esto te da el exponencial de x, o reporta un error si x está fuera de rango. Los rangos del valor x puede tener dependencias de la representación de los números flotante de tu máquina.
log(x)
Esto te da el logaritmo natural de x, si x es positivo; sino, devuelve un error.
sin(x)
Esta función te devuelve el seno de x, con x en radianes.
cos(x)
Te devuelve el coseno de x, con x en radianes.
atan2(y, x)
Esto te da el arcotangente de y/x, con el cociente entendido en radianes.
rand()
Esta función te da un número aleatorio. Los valores de rand son distribuídos unifórmemente entre 0 y 1.
A menudo quieres enteros aleatorios en su lugar. Aquí está una función definida por el usuario que puedes usar para obtener un entero aleatorio no negativo menor que n:
function randint(n) { return int(n * rand())
}
La multiplicación produce un número real aleatorio mayor que 0 y menor que n. Nosotros entonces lo convertimos a entero (usando int) entre 0 y n-1.
Aquí tienes un ejemplo donde un función similar se usa para producir números enteros entre 1 y n:
awk '
# Function to roll a simulated die.
function roll(n) { return 1 + int(rand() * n) }
# Roll 3 six-sided dice and print total number of points.
{
printf("%d points\n", roll(6)+roll(6)+roll(6))
}'
Nota: rand comienza a generar números desde el mismo punto, o semilla, cada vez que tu ejecutas awk. Esto significa que un programa producirá los mismos resultados cada vez que los ejecutas. Los números son aleatorios dentro de una ejecución de awk, pero predecibles de una ejecución a otra. Esto es conveniente para la depuración, pero si quieres que un programa haga cosas diferentes cada vez que sea usado, debes cambiar la semilla a un valor que sea distinto cada vez que se ejecute. Para hacer esto, use srand.












srand(x)
La función srand fija el punto de inicio, semilla, para la generación de números aleatorios al valor de x.
Cada valor de semilla lleva a una secuencia particular de números “aleatorios”. Por lo que, si fijas la semilla al mismo valor una segunda vez, obtendrás la misma secuencia de números “aleatorios” de nuevo.
Si omites el argumento x, como en srand(), entonces la fecha y hora del día actuales son usados como semilla. Esta es la forma de obtener números aleatorios que sean realmente impredecibles.
El valor de retorno de srand es la semilla previa. Esto hace más fácil el seguimiento de las semillas para el uso en la reproducción consistente de secuencias de números aleatorios.


time()
La función time (no presente en todas las versiones de awk) devuelve la hora actual en segundos desde el 1 de Enero de 1970.
Ctime(then)
La función ctime (no en todas las versiones de awk) toma un argumento numérico en segundos y devuelve una cadena que representa la fecha correspondiente, adecuada para impresión o un procesamiento posterior.

Publicar un comentario

0 Comentarios