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