matlab 如何对一个矩阵如一个1000×1,随机取出10个元素(这些元素可以是连续的)并赋值为-100的问题

答案可以是:
A=zeros(1000,1);
R=round(0.5+999.5*rand(10,1));
A(R)=-100
运行可以满足要求
但是对一个10000×1的矩阵,想取出1000个元素,实际运行却不是1000个元素,请问写第二句话的规则是什么,能详细说明一下吗?谢谢

你那个rand虽然产生的是随机数,既然是随机数,那么两次产生的结果就可以相同。


使用下边的程序,其中randperm是进行一个1到1000的随机排列,取出前N个之后操作,就相当于随机取了N个元素。你可以测试一下。


N=100;

A=zeros(1000,1); 

R=randperm(1000);

R=R(1:N);

A(R)=-100



下图是测试的是N=10的结果:

追问

您好,你这种方法可以保证产生1000个-100的值,但是我发现这1000个数是间隔的,没有连续的。可不可以反应一种更普遍的状况,缺失的数据中,既可以有单个的数,也可以是连续的几个或者多个数

追答

什么叫间隔的?连续的?什么又是单个的?什么又是缺失数据?

追问

哈比如说您看您取得这些任意数赋值的过程中,这些任意数的位置都是不连续的比如 463 515 517等等,可不可以产生一组连续的,比如从515到520

追答

首先我得给你说说,那1000的时候是你看错了,那1000个数绝对是1 2 3 4 到1000,只不过是打乱顺序而已。

另外,我觉着你没有理解你的题目,也没有理解我的回答。你的题目让随机挑选10个元素,我就是随机挑选的,而且我的那些数也是随机选择的,既然我是随机选择的,那么那10个数有一定的概率是连续的。

如果你想连续就让他连续,那还叫随机么?

追问

啊,我懂了,谢谢您的耐心回答!

追答

没事~

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-23
刚才的KASIMOK被删贴了 bai度~抽风 代码在你的私信里面有的追问

对不起,虽然您也不吝赐教,但是还是那个回答更简单有效,金币只有一份,只能给他了。但是还是非常感谢您。

相似回答