TLama

Untitled

Oct 19th, 2013
269
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.21 KB | None | 0 0
  1. type
  2.   TRandomValues = array[1..4] of Integer;
  3.  
  4. procedure GetRandomValues(out Values: TRandomValues);
  5. var
  6.   IntSum: Integer;
  7.  
  8.   function GetIntFromRange(Low, High: Integer): Integer;
  9.   begin
  10.     Result := Low + Random(High - Low + 1);
  11.   end;
  12.  
  13. begin
  14.   IntSum := 0;
  15.   Values[1] := GetIntFromRange(2, 7);
  16.   IntSum := IntSum + Values[1];
  17.   Values[2] := GetIntFromRange(Max(2, 8 - Values[1]), 7);
  18.   IntSum := IntSum + Values[2];
  19.   Values[3] := GetIntFromRange(Max(2, Min(7, 15 - IntSum)), Max(2, Min(7, 20 - IntSum)));
  20.   IntSum := IntSum + Values[3];
  21.   Values[4] := 22 - IntSum;
  22. end;
  23.  
  24. procedure TForm1.Button1Click(Sender: TObject);
  25. var
  26.   I, J: Integer;
  27.   IntSum: Integer;
  28.   Values: TRandomValues;
  29. begin
  30.   for I := 1 to 10000 do
  31.   begin
  32.     GetRandomValues(Values);
  33.  
  34.     IntSum := 0;
  35.     for J := 1 to 4 do
  36.     begin
  37.       if (Values[J] < 2) or (Values[J] > 7) then
  38.         raise Exception.CreateFmt('Value out of range! [%d,%d,%d,%d]',
  39.           [Values[1], Values[2], Values[3], Values[4]]);
  40.  
  41.       IntSum := IntSum + Values[J];
  42.     end;
  43.     if IntSum <> 22 then
  44.       raise Exception.CreateFmt('Sum differs from 22! [%d,%d,%d,%d]',
  45.         [Values[1], Values[2], Values[3], Values[4]]);
  46.   end;
  47. end;
Advertisement
Add Comment
Please, Sign In to add comment