Einzelnen Beitrag anzeigen

Benutzerbild von TOC
TOC

Registriert seit: 5. Jan 2005
Ort: Trier
248 Beiträge
 
Delphi 7 Personal
 
#4

Re: Zufallszahlen, wer kann helfen?

  Alt 14. Nov 2009, 09:22
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!
Lars Uwe Hohmann
"Wäre die Erde eine Bank, ihr hättet sie längst gerettet!"
(Zitat GreenPeace)
  Mit Zitat antworten Zitat