Mundo Web
manuales - recursos - graficos - programación...

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
%>
,&nbsp;
<%
  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:

 

anterior
siguiente

Home - ASP -  Curso práctico - Capítulo 5  - 1 - 2 -  3