wenn x und y nicht größer 20 sein dürfen, warum erzeugst du dann Zufallswerte bis 199 und nicht nur bis 20?
Ein anderer Punkt ist das ich persönlich niemals so eine Funktion schreiben würde da es eben im schlimmsten Fall eine Endlosschleife ist. Denn zufällig könnte random dir immer Werte größer 20 ausgeben.
Zu deinem Punkt das die Werte durch 10 Teilbar sein müssen. So wirklich viel Punkte bleiben dann gar nicht übrig! denn kleiner gleich 20 sind nur 0,10 und eben 20.
Was ich auch nicht verstehe ist warum du x und y auf 0 setzt und direkt danach einen Zufallswert zuweist.
Kurz und knapp wie man es performanter macht ohne Endlosschleife etc.
Delphi-Quellcode:
var
MAX_VAL: Integer;
FACTOR: Integer;
x: Integer;
y: Integer;
begin
MAX_VAL := 20;
FACTOR := 10;
x := random(MAX_VAL div FACTORY + 1);
y := random(MAX_VAL div FACTORY + 1);