4 回答

TA貢獻1831條經驗 獲得超9個贊
我可能會:
將ODD索引位置的所有元素抓取到一個單獨的數組中并隨機播放
將EVEN索引位置的所有元素抓取到一個單獨的數組中并隨機播放; 然后
將它們拼接在一起

TA貢獻1836條經驗 獲得超4個贊
Collections.shuffle(Arrays.asList(array));
隨著數組[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
我得到輸出[9, 5, 8, 2, 0, 7, 4, 3, 6, 1]
需要注意的是,它無法與原始數組一起使用,int[]
不會起作用Integer[]

TA貢獻1719條經驗 獲得超6個贊
改變陣列的一種方法是“隨機排序”項目。
例如,如果您使用的是Java 8或更高版本,則可以提供一個排序隔離區作為下面顯示的lambda,它在排序操作期間在每次迭代時返回正或負索引以獲得混洗結果:
ArrayList<Integer> list = new ArrayList<>();
Random random = new Random();
/* Ordered input list */
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
/* Apply random sorting behavior to achieve obtain a shuffled array */
Collections.sort(list, (Integer a, Integer b) -> {
/* Obtain random number between 0 - 1 */
Integer randomValue = random.nextInt(1);
/* Return random positive or negative value which causes "shuffled"
sort */
return randomValue == 1 ? 1 : -1;
});
/* list is now shuffled */
添加回答
舉報