Como embaralhar um Array?

ola pessoal!!!

preciso embaralhar uma array tipo “numerico” para que a ordem dos elementos da array seja sempre diferente a cada clique no botão.

ja fiz o seguinte:

public byte numeros[] = new byte[] {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};

Arrays.sort(numeros);

e agora ??? assim continuaezibindo esta mesma ordem, acho q o sort eh para deichar na ordem crescente, pergunto existe um metodo que apenas embaralha aleatoriamente ???

Como posso resolver meu problema ??

Obrigado

se puder trabalhar com objetos de uma olhada em “Collections.shuffle”,

senao implemente um metodo que gera numeros inteiros randomicos(na faixa de valores limite do seu array), onde esses numeros seriam o indice do seu array, depois vc vai obtendo o numero q ta nessa posicao e colocando no novo array.

segue um metodo para embaralhar um vetor com complexidade de pior caso de O(n)

    /**
     * 
     * @param array - vetor de int[]
     * @param seed - semente para função 
     */
    static void shuffle(int array[], long seed) {
        int index;
        // Shuffle array
        for (int i= array.length; i>1; i--){
            index = (int) Math.abs( seed % i );
            //swap
            int tmp = array[i-1];
            array[i-1] = array[index];
            array[index] = tmp;
        }
    }