Está en la página 1de 7

CAPITULO III

NÚMEROS ALEATORIOS

GENERACIÓN DE NÚMEROS ALEATORIOS.


DEFINICIÓN
Un número es aleatorio cuando no se conoce su generación y tiene características
uniformes, independientes y corresponden a una cierta distribución de
probabilidad.

Si se desea desarrollar un Modelo eficiente de Simulación, se deben de tomar en


cuenta 6 factores importantes
 Uniformemente distribuidos.
 Estadísticamente independientes.
 Reproducibles, que se puedan copiar de un dispositivo a otro (CD, USB,
etc.).
 Con períodos amplios (que no se repitan frecuentemente).
 Con grandes velocidades de generación.
 Con un mínimo de capacidad de almacenamiento.

PROPIEDADES DE NÚMEROS ALEATORIOS


Una secuencia de números aleatorios R 1, R2, ..., Rx debe tener dos importantes
propiedades estadísticas: uniformidad e independencia. Cada número aleatorio R i
es una muestra independiente tomada de una distribución continua uniforme entre
cero y uno. Esto es, la función de densidad de probabilidad es:
0 < X< 1
En otro caso

GENERACIÓN DE NÚMEROS PSEUDOS ALEATORIOS


La palabra “pseudos” se refiere a que los números generados no son
completamente aleatorios puesto que se conoce el método de generación.

MÉTODO DE CUADRADOS CENTRALES


Fue uno de los primeros métodos para generar números aleatorios, creado por J.
Von Neumann en 1946. Consiste en el siguiente procedimiento:

 Elegir un número X0 aleatorio de “2n” dígitos, llamado semilla.


 Elevarlo al cuadrado.
 El nuevo número aleatorio se elige de la parte media (central), con “2n”
dígitos.
 Repetir indefinidamente la operación

Ejemplo:
X0 = 4122 x20 = 16 | 9908 | 84
X1 = 9908 x21 = 98 | 1684 | 64
X2 = 1684 x22 = 2 | 8358 | 56
X3 = 8358 x23 = 69 | 8561 | 64

Entre las desventajas de este método está que tienen períodos breves (pocos
números aleatorios), no satisfacen completamente las pruebas estadísticas de
aleatoriedad.

IMPLEMENTACION DEL ALGORITMO DEL MÉTODO DE CUADRADO


MEDIO EN VISUAL BASIC.NET

BOTON EJECUTAR

Dim i, n As Integer
Dim x, k, w, y, z, v, t, nlimp As Double
Randomize()
k = Val(TextBox1.Text) REM número de simulaciones
x = Val(TextBox2.Text) REM primer número tomado al azar de "N cifras
n = Val(TextBox3.Text) REM número de dígitos
nlimp = 0
i=0
TextBox4.Text = TextBox4.Text & "X [" & i & "] = " & x & Chr(13) & Chr(10)
For i = 1 To k
y=x*x
z = Int(y / 100)
v = Int(z / 10 ^ (2 * n))
t = v * (10 ^ (2 * n))
w=z-t
TextBox5.Text = TextBox5.Text & "Y [" & i & "] = " & y & Chr(13) & Chr(10)
If i < nlimp * 10 + 10 Then
TextBox6.Text = TextBox6.Text & "W [" & i & "] = " & w & Chr(13)
& Chr(10)
End If
If i = nlimp * 10 + 10 Then
nlimp = nlimp + 1
TextBox6.Text = TextBox6.Text & "W [" & i & "] = " & w & Chr(13) &
Chr(10)
End If
x=w
TextBox4.Text = TextBox4.Text & "X [" & i & "] = " & x & Chr(13) & Chr(10)
Next

BOTON NUEVO
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
TextBox6.Text = ""
TextBox1.Focus()
End Sub

BOTON SALIR
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button3.Click
End
End Sub
La ejecución da como resultado:
MÉTODOS CONGRUENCIALES (Esto es para análisis y estudio del alumno)
Se basan en el concepto matemático de números congruentes. El numero entero x es
congruente con y modulo m si x – y es divisible por m, es decir, x e y dan el mismo
resto cuando se dividen por m. se denota por x ≡ y. Por ejemplo, el número 140016 es
congruente con 16 modulo 103, ya que 140016 – 16 =14000. El resto de dividir tanto
140016 como 16 por 103 es 16.

La expresión matemática que más se usa en la generación de números


pseudoaleatorios, utilizando números congruentes está dada por:

x n+1=a xn +b ( mod m )

Donde a, b y m son números enteros convenientemente elegidos y x0 recibe el


nombre de semilla. Dada la semilla x0, la formula anterior permite construir una
sucesión de números enteros, variando cada uno de ellos entre 0 y m-1, mediante.

x 1=a x 0 +b ( mod m )
x 2=a x 1+ b=a2 x 0 + ( a+ 1 ) b ( mod m)

b ( a3+ 1 )
x 3=( a3 x 0 +a 2+ a+1 ) b=a3 x 0+ ( mod m )
( a−1 )
……………………………………………………………
……
……………………………………………………………
……
b ( an +1 )
x n=a n x 0 + ( mod m )−→(n ≤ m−1)
( a−1 )

En donde los x son enteros entre 0 y m-1, y las constantes a y b son no-negativas. La
selección de a, b, y m afectan el periodo y la auto correlación en la secuencia. Entre los
resultados de los estudios realizados con estos generadores tenemos:

 El modulo m debe ser grande. Dado que los x están entre 0 y m-1, el periodo
nunca puede ser mayor que m.

 Para que el computo de mod m sea eficiente, m debe ser una potencia de 2, es
decir, 2k. En este caso mod m puede ser obtenido truncando el resultado y
tomando en k bits a la derecha.

EJEMPLO 02
Elaborar un programa en Visual Basic.Net o Visual Basic 6.0 para generar
números pseudoaleatorios por el método congruencial.
BOTON EJECUTAR
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim I, S, R, A, B, M As Integer
Dim X1 As Double
S = Val(TextBox1.Text) REM ingresa numero semilla
A = Val(TextBox2.Text) REM ingresa valor de a numero primo
B = Val(TextBox3.Text) REM ingresa valor de b numero primo <>b
M = Val(TextBox4.Text) REM igreso del modulo
R = Val(TextBox5.Text) REM ingrese veces a generar el n° aleatorio
For I = 1 To R
X1 = (A ^ I * S + B * (A ^ I - 1) / (A - 1)) Mod M
TextBox6.Text = TextBox6.Text & "NA[" & I & "] = " & X1 & Chr(13)
& Chr(10)
Next
End Sub

BOTON NUEVO
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
TextBox6.Text = ""
TextBox1.Focus()
End Sub

BOTON SALIR
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button3.Click
End
End Sub
En el ejemplo el numero semilla es 4 a vale 2 y be vale 3, lo que se ha generado es 500
números pseudoaleatorios en un rango de 0 y 9.

EJERCICIOS

Estos ejercicios deben ser resueltos en el laboratorio, solo se permitirá su diagrama de flujo
como herramienta de programación, caso contrario no será admitido para su presentación y
calificación.

 En el ejemplo dado por el docente, hacer que el programa reporte solo números
aleatorios en un rango de 0 a 1.
 En el ejemplo dado por el docente, hacer que el programa reporte la varianza y la
desviación estándar de los números generados.
 Implementar un programa en Visual Net 2010 o cualquier otro lenguaje por el
Método Congruencial Multiplicativo (investigar usando cualquier medio
disponible).

También podría gustarte