per ora due considerazioni formali

srand inizializza la sequenza dei numeri casuali con il seme per argomento, puoi usare il timstamp attuale, per esempio o come hai fatto il pid, che però non è tanto univoco. Comunque la inizializzazione la puoi fare una sola volta nel programma e la sequenza di numeri casuali è definita.

Mi è caduto l'occhio sulla tua definizione dei prodotti, io utilizzerei un enumeratore in questo caso, che ti facilita la programmazione
codice:
...
typedef enum PRODOTTO {
	TABACCO=1,
	ACCIAIO,
	FERRO,
	AUTOMOBILI,
	PNEUMATICI
	} PRODOTTO ;

...
typedef struct {
	int quantita;
	PRODOTTO merce;
	int identificatore;
} boat;

...
/* metodo che assegna in modo casuale un tipo di merce */
PRODOTTO get_merce()
{

	return rand() % 5 + 1; //assegna un valore casuale da 1 a 5 alla variabile valore
}

...