Random sur uniquement 3 relais pour module relais 8

Le plus trivial, c'est de faire un tableau contenant les possibilités (je crois qu'il y en a 56, mais c'est pas sûr). On prends une possibilité au hasard, et on l'affiche.

Pour 8 relais qui ont chacun 2 états, on peut l'écrire sur un octet. En binaire, cela peut faire par exemple 0b01001100 avec bit à 1 -> relais collé, bit à 0 -> relais décollé. Le tableau commence par exemple par

const uint8_t possibilites[56] = {
   0b11100000,
   0b11010000,
   0b11001000,
   0b11000100,
   0b11000010,
   0b11000001,
   0b10110000,
   0b10101000,
   0b10100100,
   0b10100010,
   0b10100001,
   0b10011000,
 ...

Pour avoir un état possible:
etat = possibilites[random(56)];

Pour changer l'état des relais:

for (uint8_t relay = 0; relay < 8; relay++)
{
  if ((etat & (1 << relay)) > 0) digitalWrite(6 + relay, HIGH); 
  else digitalWrite(6 + relay, LOW);
}