const int DECK_SIZE = 52;
int deck[DECK_SIZE];
void setup() {
Serial.begin(9600);
randomSeed(analogRead(0)); // Use analog noise to seed RNG
// Initialize the deck with values 0–51
for (int i = 0; i < DECK_SIZE; i++) {
deck[i] = i;
}
// Fisher–Yates Shuffle
for (int i = DECK_SIZE - 1; i > 0; i--) {
int j = random(0, i + 1);
int temp = deck[i];
deck[i] = deck[j];
deck[j] = temp;
}
// Print the shuffled deck
for (int i = 0; i < DECK_SIZE; i++) {
printCard(deck[i]);
}
}
void loop() {
// Nothing to do in loop
}
// Optional: convert integer to card name
void printCard(int card) {
const char* suits[] = {"Hearts", "Diamonds", "Clubs", "Spades"};
const char* ranks[] = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
int suit = card / 13;
int rank = card % 13;
Serial.print(ranks[rank]);
Serial.print(" of ");
Serial.println(suits[suit]);
}