Gere uma matriz de números únicos aleatórios em PHP

Eu estou tentando gerar uma matriz de números aleatórios de 0-n, em seguida, embaralhar (mas garantir que as chaves e valores não correspondem).

Por exemplo:

0 => 3
1 => 2
2 => 4
3 => 0
4 => 1

Observe que as chaves e os valores são de 0 a 4, mas nenhuma das chaves e valores são iguais.

Alguma ideia?