Hi!
Wie wäre es zum Beispiel mit so einer Funktion hier:
Delphi-Quellcode:
{
Number = Gesuchte Zahl
RangeFrom = Untere Bereichsgrenze (einschließlich)
RangeTo = Obere Bereichsgrenze (einschließlich)
Ergebnis:
Result = Anzahl der Versuche die Benötigt wurden
oder
-1 falls die angegebene gesuchte Zahl außerhalb des Bereiches liegt
}
Function GetRandomNumber(Number, RangeFrom, RangeTo: Integer): Integer;
Var
RandNum, Range: Integer;
Begin
// Vergleichen ob gesuchte Zahl innerhalb des Bereiches liegt,
// um Endlosschleife zu vermeiden
If (Number<RangeFrom) or (Number>RangeTo)
Then Result:=-1
Else Begin
// Ergebnis erstmal auf 0 setzen
Result:=0;
// Bereich voausberechnen for Random
Range:=RangeTo-RangeFrom+1;
// Wiederhole...
Repeat
// Erzeuge eine Zufallszahl innerhalb von RangeFrom, RangeTo (einschließlich)
RandNum:=Random(Range)+RangeFrom;
// Anzahl versuche Erhöhen
Inc(Result);
// ...solange bis gesuchte Zufallszahl erzeugt wurde
Until RandNum=Number;
End;
End;
Also,dieser Funktion muss Du als Eingabeparameter "Number" geben, das ist dann die gesuchte Zahl, und den Bereich. In Deinem Beispiel also 1 für RangeFrom und 16 for RangeTo. Die Funktion erzeugt dann innerhalb einer Schleife solange eine Zufallszahl innerhalb des Bereiches bis der Wert von "Number" gefunden wurde. Und als Ergebnis hast Du dann die Anzahl der Versuche.
Aufrufen kannst Du diese Funktion dann so zum Beispiel:
StringGrid2.Cells[0,0]:=IntToStr(GetRandomNumber(1, 1, 16));
Und dann würde ich Dir eine Schleife empfehlen für die erste 1, also "Number", und in dieser Schleife von 1 bis 16 laufen.
Grüße von TOC!