2024-09-13 02:56:18
如果数组长度不大,可采用循环的方式,每次用 randperm 产生随机排列,然后判断是否与原数相同,直到满足要求为止。
参考代码:
a = [1 2 3];
n = length(a);
while true
p = randperm(n);
if all(p-(1:n)), break, end
end
b = a(p)
从直觉上判断,如果数组元素比较多,这种方式的效率可能会比较低,需要研究更好的做法。不过从实际的测试看,效率似乎并没有受很大影响。你可以试试看,如果确实需要改进再说。
你好,谢谢你的回答,不过我忘了说了,这个是要解决一个多元素的数组所以最好不要用到循环,能想到办法么?
请问“多元素的数组”是什么意思?
2024-09-13 01:59:16
你好,谢谢你的回答,不过我忘了说了,这个是要解决一个多元素的数组所以最好不要用到循环,能想到办法么?
我这就是最佳方案。你可以比速度。