Problema con random en millis

Estoy intentando que una acción se ejecute cada cierto tiempo entre unos ciertos segundos y que sea aleatorio, pero al ejecutar el código la acción ocurre siempre muy cerca del valor mínimo del random.

long azar;
unsigned long tiempoAnterior = 0;


void setup() {
  Serial.begin(9600);
  randomSeed(analogRead(A0));
}

void loop() {
  // Revisamos si hay nuevas tarjetas  presentes
  azar = random(5000,10000);
  
  if(millis()-tiempoAnterior>=azar){
    Serial.println(azar);
    tiempoAnterior=millis();
  }
}

en este ejemplo los valores que me da son:

5018
5009
5003
5029
5014
5001
5010
5005
5012

¿Alguien sabe cual es el problema?

no genere el número aleatorio en cada loop() ...


unsigned long azar;
unsigned long tiempoAnterior = 0;

void setup() {
  Serial.begin(9600);
  randomSeed(analogRead(A0));
  azar = random(5000,10001);
}

void loop() {
  if(millis()-tiempoAnterior>=azar){
    Serial.println(azar);
    tiempoAnterior=millis();
    azar = random(5000,10001);
  }
}

Solucionado, muchas gracias