Matlab - Matriz randómica

 
Vista:
sin imagen de perfil
Val: 9
Ha disminuido su posición en 58 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Matriz randómica

Publicado por Israel (6 intervenciones) el 14/06/2020 00:29:52
Como puedo crear una función en matlab para producir una matriz de números pseudoaleatorios sin usar la función rand() propia de matlab. Sería una nueva función para generar una matriz randómica. Tengo entendido que debo partir de un número semilla, pero como implemento esto para generar mi matriz de nxn(cuadrada)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 918
Bronce
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Matriz randómica

Publicado por Daniel (354 intervenciones) el 14/06/2020 11:28:00
Hola,

La idea seria algo como

mod(a * x + b, m)

donde a, b y m son enteros y x el anterior número aleatorio, la primera vez la semilla. Algo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function r = aleatorio()
 
persistent x;
 
if isempty(x)
    x = 0;
end
 
a = 5;
b = 12;
m = 32;
 
x = mod(a * x + b,  m);
 
r = x / (m - 1);
 
end

Con estos parámetros se obtiene una serie de unos 10 números aleatorios, pero cambiando los parámetros se pueden aumentar la cantidad. Eso si, no uses esta función en aplicaciones reales, definir unos buenos valores para la serie es complicado.

Saludos,
Daniel Rodríguez
Analytics Lane
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 9
Ha disminuido su posición en 58 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Matriz randómica

Publicado por Israel (6 intervenciones) el 17/06/2020 15:17:01
Muchas gracias.
Y que generador utilizaría para que tenga una distribución normal?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 918
Bronce
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Matriz randómica

Publicado por Daniel (354 intervenciones) el 17/06/2020 17:40:54
Se usa la distribución inversa de la normal (norminv) usando para la probabilidad es el numero aleatorio.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 9
Ha disminuido su posición en 58 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Matriz randómica

Publicado por Israel (6 intervenciones) el 19/06/2020 17:31:22
1
2
3
4
5
6
7
8
function [distribucion_normal] =fnormal
persistent x;
if isempty(x)
    x = 0;
end
z= normpdf(x)
distribucion_normal=norminv(z)
end
La implementé asi, tomando la idea del primer problema, pero me genera un solo número aleatorio en cada corrida, como haría para genere uno distinto cada vez
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 918
Bronce
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Matriz randómica

Publicado por Daniel (354 intervenciones) el 19/06/2020 19:00:48
Hola,

Pues claro, si no se actualiza nunca la semilla se obtiene siempre el mismo valor, además es algo más fácil.

1
2
3
function data = aleatorionormal()
    result = norminv(aleatorio());
end

Saludos,
Daniel Rodríguez
Analytics Lane
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar