Ciao e benvenuto.

Doverosa premessa: la richiesta di risoluzione di esercizi scolastici non è ben vista qui sul forum. Chiaramente, essendo per te argomento di studio, sarebbe controproducente se ti si fornisse una "soluzione copiaincolla". Ad ogni modo non ti si possono negare dei consigli ma (per la natura di carattere didattico degli argomenti trattati) sia chiaro che il forum non può farti da tutor. Le nozioni fondamentali puoi trovarle anche consultando opportune guide e tutorial.

Qui, giusto qualche consiglio:

In linea di massima dovrai impostare un timer che sia attivato nel momento in cui premi il pulsante "GIRA" e che vada a richiamare "autonomamente" la funzione stop().

Il principio è lo stesso che già stai utilizzando con la variabile gira alla quale hai impostato, appunto, un setTimeout() per richiamare ricorsivamente la funzione run().

In questo caso dovrai semplicemente definire un'ulteriore variabile impostandogli un suo setTimeout(), presumibilmente random (analogamente a ciò che hai già fatto), al quale dovrai passare, come callback, la tua funzione stop().

Ovviamente è più facile a farsi che a dirsi ma, dal momento che per te è argomento di studio, è meglio se fai tu stesso qualche prova così da cercare di capire il meccanismo e i concetti di base.





PS: L'argomento è prevalentemente JavaScript (avresti dovuto postare sul relativo forum); segnalo di spostare eventualmente la discussione.
Inoltre, occhio a quando posti del codice sul forum; dai uno sguardo al regolamento di sezione (tra le discussioni in evidenza su ogni sezione del forum) per sapere come fare.