La define è una direttiva al precompilatore e serve a definire (in quel caso) una "costante simbolica", praticamente per migliorare la leggibilità (ma anche la scrittura) del codice associ al numero 987654321 un alias che è appunto "SEED", quindi quando lo vai ad utilizzare qui
di fatto è come se stessi scrivendocodice:srand(SEED);
anzi, per essere più precisi il codice che poi viene compilato davvero contiene proprio questa seconda istruzione, che sostituisce la prima appunto quando entra in funzione il precompilatore che va a sostituire tutte le occorrenze di SEED con il valore numerico associato. In realtà la #define può avere anche altre utilità, ma in quel caso non c'è niente di diverso da quello che ti ho detto.codice:srand(987654321);
Sul significato del valore, "seed" significa "seme", si riferisce al "seme di inizializzazione" del generatore di numeri pseudo-casuali che in C si assegna proprio con la funzione srand(). Chiaramente avresti potuto specificare qualsiasi altro nome invece di SEED, quello che conta è l'uso che ne fai (oltre al fatto di dargli comunque un nome significativo per motivi di logica).