关于数组的乱序算法
今天在工作中遇到一个问题,即需要将一个长度为1*N的序列乱序。似乎matlab里面并没有这样一个函数,也许由于我太粗心了没有找到,知道的朋友请讲。
在没有既有函数的前提下,我想了一个算法来实现乱序,请大家共同讨论,看看这个算法有无缺陷以及有无更优算法。
设乱序前的序列为 t(1*N):
A = rand(1,N); %生成与原序列相等长度的随机序列
= sort(A); %将随机序列按大小排序
tt = sortrows(); %用上面排得的序号将原数据打乱
t_shuffle(:,i) = tt(:,2); %提取数据部分
-------------------------------------------------------
回复 #1 不化顽石 的帖子
随机置乱,不用这么麻烦吧,看看这个是否可以满足你的要求。假设要对序列A随机置乱放到B里,那么可以这样写:
N=length(A);
b=randperm(N);
B=A(b); 多谢花兄,学习了。
页:
[1]