84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
走同样的路,发现不同的人生
這是一個數組內部取隨機值後換位置的演算法,每次取數組中的隨機數後,把這個隨機數與數組尾部的值換位,這樣取過的值全部移動到數組尾部,而新的隨機值會在0和n-1之間,也就是從頭部到最後一個未換位的位置之間取,因此不會有重複值出現.比如:numbers = [0,1,2,3,4,5],假如r=2,則取出一個隨機值numbers[2] ,也就是數字2,然後進行換位,numbers[r] = numbers[n - 1],2被換到數組最後一位,數組此時變成:[0,1,5,3,4,2],此時5換到了前面,這時n--後,再次取隨機值時是從[0,1,5,3,4,2]中取了(加粗部分),所以新的隨機值必定不會包含已經取出的2.同理,再次取值時,這個值會放到倒數第二位.
這是一個數組內部取隨機值後換位置的演算法,每次取數組中的隨機數後,把這個隨機數與數組尾部的值換位,這樣取過的值全部移動到數組尾部,而新的隨機值會在0和n-1之間,也就是從頭部到最後一個未換位的位置之間取,因此不會有重複值出現.
比如:
numbers = [0,1,2,3,4,5],
假如r=2,則取出一個隨機值numbers[2] ,也就是數字2,
然後進行換位,numbers[r] = numbers[n - 1],2被換到數組最後一位,數組此時變成:
[0,1,5,3,4,2],
此時5換到了前面,這時n--後,再次取隨機值時是從[0,1,5,3,4,2]中取了(加粗部分),所以新的隨機值必定不會包含已經取出的2.
同理,再次取值時,這個值會放到倒數第二位.