Home - ASP - Curso práctico - Capítulo 5 - 1 - 2 - 3
Curso práctico de ASP (II)
por Luciano Moreno, del departamento de diseño web de BJS
Software.
Funciones numéricas (II).-
Rnd ( [numero] ) & Randomize
Rnd() es una función numérica que no precisa argumentos obligatoriamente, retornando un número aleatorio menor que 1 pero mayor o igual que 0.
Posee un argumento opcional, numero, que va a definir cómo se va a generar el número aleatorio. Los valores posibles de numero y su resultado práctico los tenéis en la tabla A.
Se entiende por inicialización (seed) el valor inicial utilizado para generar números pseudoaleatorios. Por ejemplo, la instrucción Randomize crea un número de inicialización utilizado por la función Rnd para crear secuencias de números pseudoaleatorios únicos. Para cualquier inicialización dada, se genera la misma secuencia de números ya que cada llamada sucesiva a la función Rnd utiliza el número anterior como inicialización para el siguiente número de la secuencia.
De esto se desprende que debemos hacer trabajar juntas a las funciones Rnd y Randomize, para tener la seguridad de la verdadera aleatoriedad de las secuencias obtenidas. Por lo tanto, antes de llamar a Rnd, deberemos usar la instrucción Randomize sin argumento para inicializar el generador de números aleatorios con una inicialización basada en el temporizador del sistema.
Para repetir secuencias de números aleatorios, deberemos llamar a Rnd con un argumento negativo inmediatamente antes de utilizar Randomize con un argumento numérico. Si utilizamos Randomize con el mismo valor que para numero no se repetirá la secuencia anterior.
Ejemplo local (necesario Internet Explorer):
<script language="VBScript">
Function MiAleatorio()
Randomize
MsgBox "Un numero
aleatorio: " & Rnd,, "Ejemplo de función
Rnd"
End
Function
</script>
<form>
<input type="button"
value="pulsame" onClick="MiAleatorio()">
</form>
Que nos muestra en una ventana emergente un número aleatorio cada vez que pulsamos el botón del formulario, y cuyo resultado práctico podéis ver en esta ventana.
A veces tenemos la necesidad de crear una serie de números enteros aleatorios que estén dentro de un intervalo determinado, y puesto que los números generados con la función Rnd están entre 0 y 1, una expresión para conseguir lo que buscamos es:
MiNumero = Int((mayor - menor + 1) * Rnd + menor)
Donde menor y mayor son respectivamente los límites inferior y superior del intervalo.
El siguiente ejemplo calcula y muestra en pantalla una serie de números enteros aleatorios en el intervalo (1,10).
<%@ Language="VBScript"%>
<!DOCTYPE HTML
PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN">
<html>
<head>
<title>HTMLWeb. Curso práctico de ASP. Tema 5. Ejemplo
2</title>
<style type="text/css">
body{font-size:12px;font-family:Verdana,Helvetica;}
</style>
</head>
<body
bgcolor="#ffff99">
<%
Dim
aleatorio
Function
MiIntervalo()
Randomize
MiIntervalo=Int((10) *
Rnd + 1)
End
Function
For i=1 To 15
aleatorio=MiIntervalo()
%>
<%=aleatorio%>
<%
If
i<>15 Then
%>
,
<%
End If
Next
%>
</body>
</html>
Que tenemos trabajando en esta ventana.
Round( numero, decimales )
Función numérica. Recibe como argumento un número, variable que lo contenga o expresión numérica válida, devolviendo ese número con tantos decimales como especifiquemos en el argumento decimales. El argumento decimales es opcional, y si no se especifica obtendremos el número redondeado sin decimales, como entero.
Ejemplo:
<%
Dim MiRedondeo,
PI
Pi = 3,1415926
MiRedondeo =
Round(PI, 2)
%>
Que nos retorna MiRedondeo = 3,14
Sgn( numero )
Función numérica. Recibe como argumento un número, variable que lo contenga o expresión numérica válida, retornando un número entero que representa el signo del recibido como argumento.
Así, si el argumento es negativo retorna -1, si es 0 retorna 0, y si es positivo retorna 1.
Ejemplo:
<%
Dim MiNumero,
MiSigno
MiNumero = -12
MiSigno =
Sng(MiNumero)
%>
Que nos retorna MiSigno = -1.
Sqr( numero )
Función matemática. Recibe como argumento un número, variable que lo contenga o expresión numérica válida, retornando la raíz cuadrada de dicho número. La única limitación que tiene el argumento numero es que debe representar un número no negativo, al no estar definidas las raíces cuadradas para estos números.
Ejemplo:
<%
Dim MiNumero, MiRaiz
MiNumero
= 28
MiRaiz = Sqr(MiNumero)
%>
Que nos da MiRaiz = 5.29150262212918
Vamos a ver un ejemplo de cálculo de raíz cuadrada con validación de los datos de entrada y redondeo del resultado a mostrar.
<script language="VBScript">
Dim
MiNumero, miTemp
Function MiRaiz()
MiNumero=InputBox("Introduce un numero que no sea negativo", "Ejemplo de funcion
Sqr")
miTemp=IsNumeric(MiNumero)
If
(miTemp=false OR MiNumero="") Then
MsgBox
"Debes introducir un valor numérico. Prueba de nuevo"
Else
If MiNumero>=0 Then
MiRaiz=Sqr(MiNumero)
MsgBox "La raiz cuadrada
de " & MiNumero & " es " &
MiRaiz
Else
MsgBox "No puede
ser negativo. Prueba de nuevo"
End
If
End If
End
Function
</script>
<form>
<input type="button"
value="púlsame" onClick="MiRaiz()">
</form>
Que nos da:
Home - ASP - Curso práctico - Capítulo 5 - 1 - 2 - 3