Normally distributed random numbers with fixed sum
14 ビュー (過去 30 日間)
古いコメントを表示
Hi everybody,
I am looking for a way to create normally distributed numbers with a fixed sum.
I know the random fixed sum numer generator from FileExchange https://de.mathworks.com/matlabcentral/fileexchange/9700-random-vectors-with-fixed-sum.
However, I wasn't able to easily adjust it to my needs.
Basically, I want the same as randfixedsum with the addition that the function recevies values for mu and sigma as a vector of length n. I understand that using different standard deviations for n-different values will lead to unequal pairwise corrrelations between the generated values, but that's ok.
I understand it's maybe not a trivial problem. Any ideas?
Thanks
1 件のコメント
Jeff Miller
2021 年 7 月 27 日
Just a comment that this isn't possible in general. With two X's, for example, you can't let them both have mu=0 yet have them produce a fixed sum of 1. Likewise, you can't let them have different sigmas if they produce a fixed sum--in that case they must have equal sigmas as well as a perfect negative correlation. With larger numbers of X's the constraints are more complicated, but I would guess that there are a lot more sets of impossible mus & sigmas than of possible ones.
回答 (2 件)
Matt J
2021 年 7 月 26 日
編集済み: Matt J
2021 年 7 月 26 日
Why not simply,
x(1:N-1)=randn(1,N-1);
x(N)=fixedValue-sum(x(1:N-1))
2 件のコメント
Matt J
2021 年 7 月 27 日
It's not so much a gaussian distribution with a fixed sum so much as it is a gaussian distribution with an another number in the same vector that offsets the sum.
I don't really see the distinction. It is clearly a Gaussian random vector and the sum is unvarying, as the test below shows
N = 10000;
fixedValue = 50;
for i=1:4
x(1:N-1)=randn(1,N-1);
x(N)=fixedValue-sum(x(1:N-1));
s=sum(x)
end
参考
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

