Mit Zufallszahlen muss man vorsichtig sein.
So manche vermeintlich clevere Idee dazu ist ein Schuss in den Ofen.
Deine gehört dazu.
Wenn die Laufzeiten der einzelnen Programmteile ein ganzzahliges
Vielfaches zueinander haben, kann es sein, dass einzelne Zahlen deines
Wertebereiches niemals erzeugt werden. Oder aber noch schlimmer:
Einzelne Zahlen werden durch das Verhältnis der Laufzeiten zueinander
extrem bevorzugt.
Daher ist es am besten:
Benötigt man eine Zufallszahl, dann ruft man die RND auf. Und ansonsten
lässt man das Zeugs in Ruhe. Die Formel die hinter RND steckt, ist so
ausgeklügelt worden, dass sich automatisch die gewünschte Verteilung der
Zufallszahlen ergibt (meistens eine Gleichverteilung). Greift man da an,
macht man die Dinge nie besser sondern maximal bleibt die Charakteristik
der Zahlen erhalten. Meistens verschlimmert man aber die Situation und
die generierten Zahlen weisen alles andere als eine vernünftige
Zufallsverteilung auf.
Viele Zufallszahlengeneratoren kann man seeden. Das heist man gibt ihnen
den ersten Wert vor, von dem an dann der Generator die weiteren Zahlen
bestimmt. Dieses seeden kann man zb durch Zeitmessung bis zum ersten
Tastendruck machen. Aber danach ist man mit der Devise: Hände weg vom
Generator besser bedient.
In deinem konkreten Beispiel könntest du zb eine Steuerung einbauen,
dass dein ständiges RND generieren abgebrochen wird, sobald der erste
externe Interrupt kommt. Ab dann verwendet die Interrupt Routine nur
noch RND um jeweils die nächste Zahl zu erzeugen, die laufende
Generierung in der Hauptschleife sollte dann besser aufhören.
Damit hast du erreicht was du erreichen wolltest: Die Startbedingungen
für die erzeugten Zufallszahlen hängen von der Zeitdauer bis zum ersten
Interrupt ab und danach hast du eine saubere Zufallszahhlenverteilung,
wie sie RND implementiert hat.