per generare numeri casuali in C di solito si usa la funzione rand().
Prima di tutto devi includere la libreria di utilità standard

#include <stdlib.h>

Da questo momento in poi puoi utilizzare la bellissima funzione

rand()

che genera numeri casuali interi da 0 a RAND_MAX (che è molto alto).
Ora, poniamo chetu voglia simulare un dado, per cui ti servono numeri da uno a sei, ebbene la procedura standard è questa:

roll= rand()%6+1;

con questa istruzione generi numeri casuali da 1 a 6 abbastanza equiprobabili, se invece usi valori molto alti a destra del modulo, questa considerazione non è più valida.
Un'altro problema non indifferente è che i numeri casuali sono sempre gli stessi ad ogni esecuzione del programma, perché l'algoritmo con cui vengono generati è deterministico.
Pertanto occorre introdurre ogni volta un "seme" diverso, il quale sarà l'unico vero elemento casuale nel programma.
La funzione che permette di "inseminare" rand() è

srand(int)

La scelta dell'intero può essere fatta in molti modi, ma molto spesso si usa

#include <time.h>

srand(time(NULL));

Il secondo del giorno in cui il programma viene lanciato dovrebbe essere abbastanza casuale.

ricapitolando, ecco un programma che lancia un dado ad ogni pressione del tasto invio

codice:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int main (){
   
   int count=0;

   srand(time(NULL));

   while (count <1000){
      printf ("%d",rand()%6+1);
      getchar();
   }

   exit(1);
}