generating random numbers respect to a certain constraint
Mostrar comentarios más antiguos
hello everybody, I want to generate two numbers ( x1 and x2 ) which have a normal distribution which always respect an equality ( x1+x2=0.5 ).
Appreciate your kind comments.
Respuestas (2)
John D'Errico
el 12 de Jun. de 2017
Trivial? Although really, you have not provided sufficient information.
What are the parameters of that distribution along the constraint line? Just saying the distribution is normal is not sufficient. Regardless, normal distributions are so easy to work with that the answer is easy.
V = [1 1];V = V/norm(V);
xy = randn(10000,2);
xy = xy - xy*V'*V + [0.25 0.25];
min(sum(xy,2))
ans =
0.5
max(sum(xy,2))
ans =
0.5
As I said, normal distributions are so easy to work with, that this is trivial. The rows of xy represent points along the constraint line, normally distributed. The variance of those points along the constraint line is 1.
Or, I could have done it by creating a singular covariance matrix. You need to be careful there, because the standard methods to create normal random variables can fail, if the covariance matrix is just slightly not positive definite. I have posted a tool called nearestSPD on the file exchange though.
2 comentarios
Vahid_68
el 14 de Jun. de 2017
John D'Errico
el 14 de Jun. de 2017
Basic linear algebra. Its just a projection into a subspace.
Walter Roberson
el 14 de Jun. de 2017
x1 = randn();
x2 = 0.5 - x1;
1 comentario
Vahid_68
el 14 de Jun. de 2017
Categorías
Más información sobre Random Number Generation en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!