Sunteți pe pagina 1din 12

GENERADOR DE NUMEROS ALEATORIOS CON FORTRAN

1. Realizar un programa de generador de números Aleatorios vectoriales para “N”


valores, usando sentencias repetitivas, indique su diagrama de flujo, algoritmo y
codificación.

I. Diagrama de flujo. INICIO

RANDOM_NUMBER (R)

RPTA

Rpta==’No’ SI

NO

FIN
II. Algoritmo
Paso 1: Inicio del programa
Paso 2: Inicio del lazo DO 1
Paso 3 : Ingresar la cantidad de números aleatorios: N
Paso 4: Inicio del contador Do1: I=1, N
Paso 5: Call Random number (R)
Paso 6: Mostrar el número aleatorio: R
Paso 7: Fin del contador DO 1
Paso 8: Ingreso de respuesta.
Paso 9: Si respuesta =
SI---> EXIT
NO------> CONTINUAR
Paso 10: Fin del programa

III. Codificación

PROGRAM GENERADOR_NUMERO_ALEATORIO_VECTORIAL
IMPLICIT NONE
REAL, DIMENSION(:), ALLOCATABLE::R
INTEGER::N
CHARACTER (2)::RPTA
PRINT*,''
PRINT*,'****************************************************************************'
PRINT*,' PROGRAMA PARA GENERAR NUMEROS ALEATORIOS VECTORIALES’
PRINT*,' PARA N VALORES '
PRINT*,'***************************************************************************'
DO
PRINT*,'INGRESAR LA CANTIDAD DE VALORES DEL VECTOR'
READ*,N
ALLOCATE(R(N))
CALL RANDOM_NUMBER(R)
PRINT '(E14.7)',R
DEALLOCATE(R)
PRINT*,'¿DESEA CONTINUAR?'
READ*, RPTA
IF (RPTA=='NO') EXIT
END DO
END PROGRAM
IV. Verificación
2.- .- Realizar un programa para generar números aleatorios vectoriales para “N” valores,
también realizar su respectivo diagrama de flujo, algoritmo, la codificación y verificación.

I.- Diagrama de flujo. INICIO

RANDOM_NUMBER (R)

RPTA

FIN

II. Algoritmo
Paso 1: Inicio del programa
Paso 2: Inicio del lazo DO 1
Paso 3 : Ingresar la cantidad de números aleatorios: N
Paso 4: Inicio del contador Do1: I=1, N
Paso 5: Call Random number (R)
Paso 6: Mostrar el número aleatorio: R
Paso 7: Fin del contador DO 1
Paso 10: Fin del programa

III. Codificación

PROGRAM GENERADOR_NUMERO_ALEATORIO_VECTORIAL
IMPLICIT NONE
REAL, DIMENSION(:), ALLOCATABLE::R
INTEGER::N
PRINT*,''
PRINT*,'****************************************************************************'
PRINT*,' PROGRAMA PARA GENERAR NUMEROS ALEATORIOS VECTORIALES’
PRINT*,' PARA N VALORES '
PRINT*,'***************************************************************************'
DO
PRINT*,'INGRESAR LA CANTIDAD DE VALORES DEL VECTOR'
READ*,N
ALLOCATE(R(N))
CALL RANDOM_NUMBER(R)
PRINT '(E14.7)',R
DEALLOCATE(R)
END DO
END PROGRAM

IV. Verificación
GENERADOR DE NUMEROS ALEATORIOS

1.- Realizar un programa para generar números aleatorios vectoriales usando el método de
congruencia lineal para “N” valores, también realizar su respectivo diagrama de flujo,
algoritmo, la codificación y verificación
I.-Diagrama de flujo INICIO

𝑥𝜙 , 𝑎, 𝑐, 𝑚

𝛽 I=1,N

𝑥1 = (𝑎 + 𝑥𝜙 + 𝑐)𝑚𝑜𝑑 𝑚

𝑥1

𝑅 = 𝑥2 /𝑚

𝑥𝜙 = 𝑥1

𝛽
𝑥𝜙

FIN
II. Algoritmo
Paso 1: Inicio del programa.
Paso 2: Ingresar los valores iniciales : 𝑥𝜙 , 𝑎, 𝑐, 𝑚
Paso 3: Ingresar la cantidad de números aleatorios: N
Paso 4: Inicio del Lazo DO 1: I = 1, 𝑁
Paso 5: Calcular: 𝑥1 = (𝑎 + 𝑥𝜙 + 𝑐)𝑚𝑜𝑑 𝑚

Paso 6: Mostrar el valor 𝑥1 .


Paso 7 : Calcular el número aleatorio: 𝑅 = 𝑥2 /𝑚
Paso 8: Mostrar el número aleatorio: R
Paso 9 : Hacer : 𝑥𝜙 = 𝑥1 .

Paso 10: Fin del Lazo Do 1


Paso 11: Fin del programa.

III. Codificación
PROGRAM CONGRUENCIA_LINEAL
IMPLICIT NONE
DOUBLE PRECISION,DIMENSION(4)::X1,R,X0
DOUBLE PRECISION::a,c,m
INTEGER:: I,N
PRINT*,'********************************'
PRINT*,'GENERADORES DE NUMEROS ALEATORIOS '
PRINT*,'*********************************'
PRINT*,'METODO DE CONGRUENCIAL LINEAL'
PRINT*,'*********************************'
PRINT*,'INGRESE LOS VALORES INICIALES'
PRINT*,'============================='
PRINT*,'INGRESAR SEMILLA'
READ*,X0
PRINT*,'INGRESAR EL MULTIPLICADOR CONSTANTE'
READ*,a
PRINT*,'INGRESAR EL INCREMENTO Y EL MODULO'
READ*,c,m
PRINT*,'INGRESE LA CANTIDAD DE NUMEROS ALEATORIOS'
READ*,N
DO I=1,N
X1=MOD(a*X0+C,M)
R=X1/m
PRINT*,R
X0=X1
END DO
END PROGRAM CONGRUENCIA_LINEAL

V. Verificación
2.- Realizar un programa para generar números aleatorios vectoriales con estructura de
repetición usando el método de congruencia lineal para “N” valores, también realizar su
respectivo diagrama de flujo, algoritmo, la codificación y verificación.

I.- Diagrama de flujo


INICIO

𝑥𝜙 , 𝑎, 𝑐, 𝑚

𝛽 I=1,N

𝑥1 = (𝑎 + 𝑥𝜙 + 𝑐)𝑚𝑜𝑑 𝑚

𝑥1

𝑅 = 𝑥2 /𝑚

𝑥𝜙 = 𝑥1

𝑥𝜙
𝛽

𝑅𝑃𝑇𝐴

RPTA==SI NO

𝜃 Si

FIN

II.- Algoritmo.
Paso 1: Inicio del programa.
Paso 2: Inicio del lazo DO 1
Paso 3: Ingresar los valores iniciales: 𝑥𝜙 , 𝑎, 𝑐, 𝑚
Paso 4: Ingresar la cantidad de números aleatorios: N
Paso 5: Inicio del Lazo DO 2: I = 1, 𝑁
Paso 6: Calcular : 𝑥1 = (𝑎 + 𝑥𝜙 + 𝑐)𝑚𝑜𝑑 𝑚

Paso 7: Mostrar el valor 𝑥1 .


Paso 8 : Calcular el número aleatorio: 𝑅 = 𝑥1 /𝑚
Paso 9: Mostrar el número aleatorio: R
Paso 10 : Hacer: 𝑥𝜙 = 𝑥1 .

Paso 11: Fin del Lazo Do


Paso 12: Ingreso de respuesta.
Paso 13: Si respuesta =
No---> EXIT
Si------> CONTINUAR
Paso 14: Fin del programa.
III.- Codificación.
PROGRAM CONGRUENCIA_LINEAL
IMPLICIT NONE
DOUBLE PRECISION,DIMENSION(4)::X1,R,X0
DOUBLE PRECISION::a,c,m
INTEGER:: I,N
INTEGER::RPTA
PRINT*,'********************************'
PRINT*,'GENERADORES DE NUMEROS ALEATORIOS '
PRINT*,'*********************************'
PRINT*,'METODO DE CONGRUENCIAL LINEAL'
PRINT*,'*********************************'

DO
PRINT*,'*********************************'
PRINT*,'INGRESE LOS VALORES INICIALES'
PRINT*,'============================='
PRINT*,'INGRESAR SEMILLA'
READ*,X0
PRINT*,'INGRESAR EL MULTIPLICADOR CONSTANTE'
READ*,a
PRINT*,'INGRESAR EL INCREMENTO Y EL MODULO'
READ*,c,m
PRINT*,'INGRESE LA CANTIDAD DE NUMEROS ALEATORIOS'
READ*,N
DO I=1,N
X1=MOD(a*X0+C,M)
R=X1/m
PRINT*,R
X0=X1
END DO
PRINT*,'*****************'
PRINT*,'CONTINUAR (SI/NO) '
READ*,RPTA
IF(RPTA/="SI")EXIT
END DO
END PROGRAM CONGRUENCIA_LINEAL
IV. Verificación.

S-ar putea să vă placă și