Java 以随机顺序打印数组

Java 以随机顺序打印数组,java,arrays,Java,Arrays,如何在java中以随机顺序打印数组 例如: int[]myArray={5,4,3,2,1} 打印时,结果可能为: 3 2 1 4 5 或 4 3 2 5 1创建random类的实例,然后使用整数i作为索引。在它到达的地方,计算元素前和元素后的长度,然后递归地执行相同的操作 创建一个新数组顺序={0,1,2,3,4}并将其洗牌。然后像 for (int i: order) System.out.print(myArray[i]); 你应该考虑写一篇文章。这很容易做到,而且效率很高。实际

如何在java中以随机顺序打印数组

例如:

int[]myArray={5,4,3,2,1}

打印时,结果可能为:

3 2 1 4 5


4 3 2 5 1

创建random类的实例,然后使用整数i作为索引。在它到达的地方,计算元素前和元素后的长度,然后递归地执行相同的操作

创建一个新数组
顺序={0,1,2,3,4}
并将其洗牌。然后像

for (int i: order)
    System.out.print(myArray[i]);

你应该考虑写一篇文章。这很容易做到,而且效率很高。实际上,您可以将数组按逻辑划分为“无序”部分和“非无序”部分,然后从非无序部分重复拾取一个随机元素,并将其与非无序部分的第一个元素交换,以使该部分成为无序部分

或者,创建一个
列表
,然后使用。不幸的是,数组没有等价物,但Java的类型系统在使数组或原语通用方面做得并不好:(


(我假设您知道如何进行打印端,而洗牌端对您来说比较棘手。)

在数组的随机元素之间交换:

import java.util.Random;
public class JavaTest {

    public static void main(String[] args) {
        int[] myArray = {5,4,3,2,1};

        Random random = new Random();

        for (int i=0; i<20; i++) { // 20: is custom number
            int i1 = random.nextInt(myArray.length);
            int i2 = random.nextInt(myArray.length);

            int tmp = myArray[i1];
            myArray[i1] = myArray[i2];
            myArray[i2] = tmp;
        }

        for (int i=0; i<myArray.length; i++)
            System.out.print(myArray[i]);
    }
}
import java.util.Random;
公共类JavaTest{
公共静态void main(字符串[]args){
int[]myArray={5,4,3,2,1};
随机=新随机();
对于(inti=0;iintmain(){

}

与“如何随机订购NSArray”相关
    int array[10]={1,2,3,4,5,6,7,8,9,10};
    int i,k,temp;   
    struct timespec spec;
    long            ms; // Milliseconds

    /* pick a random number from 0 to 9 elements */
    for (i = 9;i>0;i--){

            clock_gettime(CLOCK_REALTIME, &spec);
            ms = spec.tv_nsec / 1.0e6;
            srand((int )ms);
            temp = rand();
            temp = temp % i;

            printf(" %d  \t  ",array[temp]);


            k = array[i];
            array[i] =  array[temp];
            array[temp] = k;
    }
    printf(" %d  \t \n ",array[0]);
    return 0;