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

例如: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

你可能感兴趣的:(matlab)