Il n'y a pas de raison qu'il ne joue que les impairs, random(1,6) renvoie un nombre entre 1 et 5 compris.
Par contre, c'est pas vraiment des nombres aléatoires, mais une série de nombres qui sera la même à chaque exécution.
Essaye d'ajouter
randomSeed(analogRead(0));
dans le setup pour que les séries soient différentes.
Sinon, tu peux utiliser la bibli TrueRandom qui génère de l'aléatoire plus aléatoire...
Si tu veux faire un shuffle, tu peux le coder toi-même. Il suffit de faire une liste de nombres allant de 1 à ton nombre de pistes N et de la mélanger.
Ca peut se faire comme ça :
for (int i=0;i<100;i++) {
int indice1 = random(1,N);
int indice2 = random(1,N);
int a = liste[indice1];
liste[indice1] = liste[indice2];
liste[indice2] = a;
}
100 est le nombre de fois que tu mélanges. Ce nombre peut être changé, je l'ai choisi au hasard.