随机获取数组里的值分别赋给三个变量

随机获取数组里的值分别赋给三个变量
int[] arr = {3,4,4};数组里的 3个数 循环随机取出来 赋给a,b,c三个变量
例如:

a=4,b=3,c=4   a=3,b=4,c=4  a=4,b=4,c=3
 


import java.util.Random;

public class Main {
    public static void main(String[] args) {
        int[] arr = {3, 4, 4};
        int a, b, c;

        Random random = new Random();

        // 随机生成三个不重复的索引
        int index1 = random.nextInt(arr.length);
        int index2;
        do {
            index2 = random.nextInt(arr.length);
        } while (index2 == index1);

        int index3;
        do {
            index3 = random.nextInt(arr.length);
        } while (index3 == index1 || index3 == index2);

        // 将对应索引的值赋给变量
        a = arr[index1];
        b = arr[index2];
        c = arr[index3];

        System.out.println("a=" + a + ", b=" + b + ", c=" + c);
    }
}

如果是随机取出数组三个元素,且不重复取取过下标的元素,则需要判断当前元素是否取出过。

代码如下:

参考链接:



import java.util.Arrays;
import java.util.Random;

public class RandomArrNumTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int arr[] = {3,4,4};   //原数数组
        
        // http://c.biancheng.net/view/924.html
        // 复制原始数组
        int temp[ ]= (int[])Arrays.copyOf(arr, arr.length);
        
        // https://www.cnblogs.com/ylz8401/p/7234687.html
        Random rand = new Random();
        int result [] = new int[arr.length];  // 存储随机取出数组元素的数组
        int i=0;
        while(i<arr.length) {  // 从数组取出三个元素
            
            int index  = rand.nextInt(temp.length);// 随机产生一个数组下标
            
            if(temp[index]!=-1) {  // 如果当前元素没有被取出过,则取出当前元素
                result[i]=temp[index];  // 取出当前元素存储结果数组
                temp[index]=-1;  // 当前元素置-1,下次不再取出
                i++;  // 取下一个元素
            }
            
        }
        
        // 依次将取出的三个元素赋值给变量a,b,c
        int a= result[0];
        int b=result[1];
        int c=result[2];
        
        // 打印结果
        System.out.println("a="+a+", b="+b+", c="+c);
            
    }
        
    

}


img

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7778637
  • 以下回答由chatgpt基于相关博客总结生成:

    可以使用Java中的Random类来实现随机获取数组中的值,然后使用赋值操作将该值分别赋给三个不同的变量a,b,c。具体实现代码如下:

    import java.util.Random;
    
    public class RandomArrayValue{
        public static void main(String[] args){
            Object[] arr = {1, "hello", 3.14, true}; // 数组可以包含不同类型的元素
            Random rand = new Random();
            int index = rand.nextInt(arr.length); // 随机获取一个数组下标
            Object value = arr[index]; // 获取数组中的值
            // 将值分别赋给三个不同变量
            Object a = value;
            Object b = value;
            Object c = value;
            System.out.println("a = " + a);
            System.out.println("b = " + b);
            System.out.println("c = " + c);
        }
    }
    

    上述代码中,使用了Java中的Object类型作为数组元素的类型,可以包含不同类型的元素。使用Random类的nextInt方法获取一个随机下标,然后获取该下标对应的数组元素值,再分别赋值给三个变量a、b、c。输出结果为:

    a = hello
    b = hello
    c = hello
    

    如果数组中的元素类型已知,可以使用相应的类型来定义数组,然后使用强制类型转换将获取的元素值转换为相应的类型后再赋值给变量。例如,如果数组中只包含int类型的元素,实现代码如下:

    import java.util.Random;
    
    public class RandomIntArrayValue{
        public static void main(String[] args){
            int[] arr = {1, 2, 3, 4, 5}; // 数组中只包含int类型的元素
            Random rand = new Random();
            int index = rand.nextInt(arr.length); // 随机获取一个数组下标
            int value = arr[index]; // 获取数组中的值
            // 将值分别赋给三个不同变量
            int a = value;
            int b = value;
            int c = value;
            System.out.println("a = " + a);
            System.out.println("b = " + b);
            System.out.println("c = " + c);
        }
    }
    

    输出结果为:

    a = 5
    b = 5
    c = 5