Salut !
Je crois que quand tu affectes une valeur double à un entier sans passer par la fonction INT, ça arrondi la valeur au lieu de la tronquer.
Donc si tu arrondis, ta formule C = T1.Length * Rnd() peut du coup arriver à Length alors que rnd() est strictement inférieur à 1...
Je parie que si tu enlèves ton -1+1 dans ta formule, ça marchera malgré tout grâce à l'ajout de la fonction INT...

