请问一下MATLAB有能力办到我随机值最后加总值是我规定的值的程序实现吗
不好意思目前遇到一个蛮困难的问题 在此问一下各位是否有好方法 谢谢就是例如我假设A = 20000;
我要随机10格数字放入B矩阵
B=[数字1;
数字2;
数字3;
.
.
.
数字10];
每个数字都超过1000
最后10个数字加总C=A=20000 以前看过一个m*n版本的,每列的和是定值。
n*1的话其实还是挺好写的:function x= randconstrained(n,a,b,s)
%n是维数, a<=x(i)<=b;s是限制条件里的和
ss = (s-n*a)/(b-a);
x = zeros(n,1);
r = rand(n-1,1);
Sum = 0; Product = 1;
for i = n-1:-1:1
temp = r(n-i).^(1/i);
Sum = Sum + (1-temp).*ss/(i+1).*Product;
Product = temp.*Product;
x(n-i) = Sum ;
end
x(n) = Sum + Product.*ss;
[~,p] = sort(rand(n,1));
x = (b-a)*x(p)+a;
return>> x=randconstrained(10,1e3,2e4,2e4)
x =
1.0e+003 *
1.5895
3.3042
1.0148
1.1263
1.4420
2.3287
2.9177
1.3780
2.0665
2.8322
>> x=randconstrained(10,1e3,2e4,2e4)
x =
1.0e+003 *
1.0782
3.1503
1.0291
3.1830
2.0594
2.1661
1.2055
1.5616
3.2565
1.3103
>> x=randconstrained(10,1e3,2e4,2e4)
x =
1.0e+003 *
1.3637
1.0518
1.2895
2.7400
2.8402
2.1123
3.8144
1.9673
1.5211
1.2997 其实10个数字只有九个是随机的,最后一个可以自然得到 请问?
[~,p] = sort(rand(n,1));
这句
出现 Expression or statement is incorrect--possibly unbalanced (, {, or [. 错误 4# 武神裝攻
估计是你的版本的问题
估计是你的版本的问题
qibbxxt 发表于 2011-5-27 11:44 http://forum.simwe.com/images/common/back.gif
请问要如何解决?
请问要如何解决?
武神裝攻 发表于 2011-5-27 14:30 http://forum.simwe.com/images/common/back.gif
sort那行主要是用来随机打乱x内各元素的排列顺序,
如果你运行不了的话可以自己换个方法解决,也很简单的。
实在不行就不打乱了,
把最后两行去掉换成
x=(b-a)*x+a;
倒也还勉强。
页:
[1]