不化顽石 发表于 2007-9-23 16:59

关于数组的乱序算法

今天在工作中遇到一个问题,即需要将一个长度为1*N的序列乱序。
似乎matlab里面并没有这样一个函数,也许由于我太粗心了没有找到,知道的朋友请讲。
在没有既有函数的前提下,我想了一个算法来实现乱序,请大家共同讨论,看看这个算法有无缺陷以及有无更优算法。

设乱序前的序列为 t(1*N):

A = rand(1,N);                           %生成与原序列相等长度的随机序列
= sort(A);                  %将随机序列按大小排序
tt = sortrows();            %用上面排得的序号将原数据打乱
t_shuffle(:,i) = tt(:,2);               %提取数据部分

-------------------------------------------------------

花如月 发表于 2007-9-23 20:35

回复 #1 不化顽石 的帖子

随机置乱,不用这么麻烦吧,看看这个是否可以满足你的要求。
假设要对序列A随机置乱放到B里,那么可以这样写:
N=length(A);
b=randperm(N);
B=A(b);

不化顽石 发表于 2007-9-23 21:13

多谢花兄,学习了。
页: [1]
查看完整版本: 关于数组的乱序算法