Einzelnen Beitrag anzeigen

Wosi

Registriert seit: 29. Aug 2007
59 Beiträge
 
#14

AW: Nur random Zahlen ausgeben die durch 4 teilbar sind

  Alt 9. Okt 2017, 10:21
Zu 1. Schreib eine Funktion myrand() die ungefähr so aussueht,
wobei (..) den Bereich definieren, multiplizieren mit 4 verletzt ev. den Bereich, also lieber gleich an der Basis ansetzen.
Delphi-Quellcode:
funtion myrand(..): integer;
begin
  repeat
    result := random(...);
  until result mod 4 = 0;
end.
Das Laufzeit-Verhalten dieser Funktion ist vom Zufall abhängig. Die Terminiertheit kann für diese Funktion nicht bewiesen werden. Damit birgt sie die theoretische Gefahr eines Programm-Absturzes. In der Praxis wird sie meist in Sekundenbruchteilen ein korrektes Ergebnis liefern. In größeren Systemen sollten derartige Algorithmen vermieden werden. Stattdessen kann die Funktion auch mit konstantem Laufzeitverhalten (O(1)) implementiert werden:

Delphi-Quellcode:
funtion MyRand(Range: Integer): Integer;
var
  DividedRange: Integer;
begin
  DividedRange := Range div 4;
  Result := Random(DividedRange) * 4;
end;
  Mit Zitat antworten Zitat