random number generation for known sum
4 ビュー (過去 30 日間)
古いコメントを表示
i what do generate some 15 random numbers that sum for each separate value of say, 60 , 70, 40, 65. How would i go abouts this?
sum = [60 70 40 65];
n=15;
b = [ ];
for i = 1:1:n,
a = randi([1,??]);
b = [b a];
end
0 件のコメント
採用された回答
Azzi Abdelmalek
2013 年 8 月 27 日
n=60;
m=1:n;
a=m(sort(randperm(60,15)));
b=diff(a);
b(end+1)=60-sum(b)
sum(b)
13 件のコメント
Bruno Luong
2020 年 7 月 13 日
編集済み: Bruno Luong
2020 年 7 月 13 日
The easiest way is perhaps using Roger FEX function, then do some sort of "integering" the float solution
sumatarget = 60
n = 15;
ub = 7;
x = floor([0; cumsum(randfixedsum(n,1,sumatarget,0,ub))]);
x(end) = sumatarget; % prevent floating point error
r = diff(x)
The distribution might be not perfectly uniform but possibly close enough and suitable for what ever you want to do with it.
Tejas
2020 年 7 月 14 日
Integering the solution from Roger's function works very well for me. I do not require the numbers to be perfectly uniform. Thanks!
その他の回答 (1 件)
参考
カテゴリ
Help Center および File Exchange で Creating and Concatenating Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!