Problemas com jogo puzzle numerico

Boa tarde pessoal, tudo bem?

Sou novo no forum e estou com uma dúvida:

Estou desenvolvendo um jogo de puzzle númerico:

public class PuzzleCanvas extends Canvas implements CommandListener {

private MIDlet midlet; 
private Command sair; 
private int[][] pecas = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 15, 14, 0}}; 
private int posicaoDoZeroX = 3; 
private int posicaoDoZeroY = 3; 

public PuzzleCanvas(MIDlet midlet) { 
    setTitle("Jogo Maluco"); 

    this.midlet = midlet; 

    sair = new Command("Sair", Command.EXIT, 1); 
    addCommand(sair); 
    setCommandListener(this); 
} 

protected void paint(Graphics g) { 
    int alturaPeca = g.getClipHeight() / 4; 
    int larguraPeca = g.getClipWidth() / 4; 


    g.setColor(0xFFFFFF); 
    g.fillRect(0, 0, g.getClipWidth(), g.getClipHeight()); 

    g.setColor(0x000000); 

    int pecaY = 0; 
    for (int j = 0; j < g.getClipWidth() - larguraPeca / 2; j += larguraPeca) { 
        int pecaX = 0; 
        for (int i = 0; i < g.getClipHeight() - alturaPeca / 2; i += alturaPeca) { 
            g.drawRect(j, i, larguraPeca, alturaPeca); 
            if (pecas[pecaX][pecaY] != 0) { 
                g.drawString(Integer.toString(pecas[pecaX][pecaY]), j + alturaPeca / 2 - g.getFont().getHeight() / 2, i + larguraPeca / 2, Graphics.TOP | Graphics.HCENTER); 

            } 
            pecaX++; 

        } 
        pecaY++; 
    } 

} 

protected void keyPressed(int keyCode) { 
    int tecla = getGameAction(keyCode); 

    if (tecla == Canvas.UP) { 
        if (posicaoDoZeroX + 1 < 4) { 
            pecas[posicaoDoZeroX][posicaoDoZeroY] = pecas[posicaoDoZeroX + 1][posicaoDoZeroY]; 
            posicaoDoZeroX += 1; 
        } 
    } 
    if (tecla == Canvas.DOWN) { 
        if (posicaoDoZeroX - 1 > -1) { 
            pecas[posicaoDoZeroX][posicaoDoZeroY] = pecas[posicaoDoZeroX - 1][posicaoDoZeroY]; 
            posicaoDoZeroX -= 1; 
        } 
    } 
    if (tecla == Canvas.LEFT) { 
        if (posicaoDoZeroY + 1 < 4) { 
            pecas[posicaoDoZeroX][posicaoDoZeroY] = pecas[posicaoDoZeroX][posicaoDoZeroY + 1]; 
            posicaoDoZeroY += 1; 
        } 
    } 
    if (tecla == Canvas.RIGHT) { 
        if (posicaoDoZeroY - 1 > -1) { 
            pecas[posicaoDoZeroX][posicaoDoZeroY] = pecas[posicaoDoZeroX][posicaoDoZeroY - 1]; 
            posicaoDoZeroY -= 1; 
        } 
    } 


    pecas[posicaoDoZeroX][posicaoDoZeroY] = 0; 
    repaint(); 
} 

public void commandAction(Command c, Displayable d) { 
    if (c == this.sair) { 
        midlet.notifyDestroyed(); 
    } 
} 

só que estou com dificuldades na criação de uma função que randomize os valores do array sem repetir. Em JSE eu consegui desenvolver a função, mas não consigo achar substitutos pro ME:
Código: ? Selecionar ? ? Expandir ?

public class Sorteio {

public static void main(String[] args) { 
    int qtdeNumeros = 16; //qtde de numeros q vc vai sortear 
    int[] posicoesRand = new int[qtdeNumeros]; //guarda os numeros sorteados. 

    Random randGen = new Random(); 

//inicializa o array
for (int i = 1; i < qtdeNumeros; i++) {
posicoesRand[i] = i;
}
//sorteia sem repeticoes
int temp, randomPosition;
for (int i = 1; i < qtdeNumeros; i++) {
randomPosition = randGen.nextInt(qtdeNumeros - 1);
temp = posicoesRand[i];
posicoesRand[i] = posicoesRand[randomPosition];
posicoesRand[randomPosition] = temp;
}

    for (int i = 1; i < posicoesRand.length; i++) { 
        System.out.println(posicoesRand[i]); 

    } 
} 

}

Alguem poderia me dar alguma dica?

Agradeço a todos