Tout est là. La méthode random de l'objet Math rend un nombre compris entre 0 et 1 (exclu). Multiplié par 20, ce nombre sera compris entre 0 et 20 (exclu). La méthode floor de l'objet Math rend le plus grand entier inférieur ou égal au nombre qu'on lui soumet. La première ligne nous rend donc un entier k compris entre 0 et 20 (exclu).
Puisque l'on procède à des tirages sans remise, on tope les numéros numeros déjà sortis (ligne 3) et, tant que random nous rend un numéro k déjà sorti, on n'est pas satisfait et on refait un tirage (ligne 2).
Enfin, on ajoute 1 au résultat k (ligne 4), pour obtenir un numéro j compris entre 1 et 20 (inclus)
Tu pourrais probablement invoquer MKtime (ou un équivalent) pour imposer un point de départ pseudo-aléatoire basé sur l'heure actuelle, mais il me semble que la méthode random utilise déjà implicitement l'heure actuelle pour réaliser son premier tirage.