打乱数组内的值 打乱的本质是交换, 交换不会丢数也不会多数; 循环将 随机下标和本次下标内的值交换

package com.fqs.demo;
import java.util.Random;
public class ZhiBoChouJiang {
    public static void main(String[] args) {
        //打乱数组中的顺序
        int [] arr={1,2,3,4,5};
        Random r=new Random();
        for (int i = 0; i < arr.length; i++) {
            //随机下标
            int randomIndex=r.nextInt(arr.length);
            //将当次的下标的数组值和随机下标的数组值交换 就打乱了数组内的值;
            //交换就不会导致丢失数组内的值,也不会出现重复的值
            //{1,2,3,4,5} 第一次 随机数 2    arr[2]=3交换arr[0]=1后{3,2,1,4,5}
            //{3,2,1,4,5} 第二次 随机数 0    arr[0]=3交换arr[1]=2后{2,3,1,4,5}
            //取一个临时temp 存放arr[当次的]
            int temp=arr[i];
            //将arr[随机下标]存放在arr[当次的]
            arr[i]=arr[randomIndex];
            //将temp里存放的arr[当次的]放到arr[随机数]
            arr[randomIndex]=temp;
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }

}

 

posted @ 2023-02-09 20:45  胖豆芽  阅读(18)  评论(0编辑  收藏  举报