matlab 有条件的随机数

供稿:hz-xin.com     日期:2025-01-14
matlab如何产生一组随机数,满足自己给出的条件。如产生随机数a(n),使得a(1)^2+...+a(n)^2=1

提供一个思路,可以先按常规办法获取一组随机数,然后把这组数归一化处理即可,比如用下面的办法,可以得到满足条件的随机数:
a = rand( 1, 5 );
r0 = sqrt( sum( a.^2 ) ); % 向量的长度,就是每个元素的平方和再求平方根
a = a / r0; % 归一化处理
r1 = sum( a.^2 ); % 向量的平方和

由计算机产生的随机数都是伪随机的,不可能产生真正的随机数,你说的问题可能是两次rand取到的随机数是相同的吧? 如果是这样的话,有一种方法就是人为设定rand函数的种子,详见:
http://wenku.baidu.com/view/6500290d4a7302768e9939f2.html

a=round(rand(1)*100);
b=round(rand(1)*100);
while(a+b>=200)
a=round(rand(1)*100);
b=round(rand(1)*100);
end

产生两个1到100的数,和大于或等于两百的可能只有两个都为100。你这个是不是有问题,不过按照要求,就是上面那段程序了