您的位置:首页 > 编程语言 > MATLAB

matlab某数组中产生不重复随机数,数组的随机排序,randperm函数numel,X=X(A)函数

2019-10-16 23:34 2251 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/mahara/article/details/102597021

例如:A=[1,4,5,8,14,15],从数组A中产生3个不重复的随机数。(当然也可以从A=1:n个数中产生几个不重复随机数)或者(将数组随机排序)。此过程需要利用randperm函数。
1.randperm函数
y = randperm(n),y是把1到n这些数随机打乱得到的一个数字序列。也可以认为是生成了1到n的不重复的随机排序的n个数。

>> y = randperm(5)

y =

2     3     4     1     5

y = randperm(n,m),生成1到n之间的,不重复的,随机的,m个数。可以理解为,先生成了,y = randperm(n),然后取了前m个数,所以m不能大于n。

>> y = randperm(4,3)

y =

4     1     3
>> y = randperm(3,4)
错误使用 randperm
K 必须小于或等于 N。

2.numel(x)
numel(x)获得变量长度

y =

4     1     3

>> numel(y)

ans =

3

3.X=X(A) 获取新排列的数列
A为新的数组的排列顺序的数组。例如,A=[2 1 3],也就是将,原数组中,第2个数放在第一位,第1个数放第二位,第三个数放第三位。

y =

4     1     3

>> y=y([2 1 3])

y =

1     4     3

4.数组的随机排序
利用randperm(n),生成了1到n个,随机排序的,不重复的,n个数,相当于生成了新数组的顺序,配合X=X(A),即可进行排序。

>> A=randperm(3)
A =

1     3     2

>> y

y =

1     4     3

>> y=y(A)

y =

1     3     4

5.数组中产生不重复随机数
与上一个数组的随机排序相类似,用randperm(n),生成了1到n个,随机排序的,不重复的,n个数,相当于生成了新数组的顺序。但是,这次是要生成其中部分的随机数,所以,要用randperm(n,m)。然后就能在n个原来的数中,产生随机的不重复的m个数。
可以用numel(y)获取原来的数组中n的数值。

y =

4     5     8     3     7     8    14    69     3
>> n=numel(y)

n =

9
>> X=randperm(9,4)

X =

9     8     2     3

>> y=y(X)

y =

3    69     5     8
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐