Losowanie określonych liczb

0

Witam, mam pytanie jak we free pascalu wylosować liczbę ze zbioru (1,5,10). Wiem, że jest funkcja random(przedział), ale to losuje od x do y. A ja chce by losowało konkretne liczby.
Dzięki za wszelkie odpowiedzi.

1

Chwila namysłu:

Function RandomFromArray(Tab: Array Of Integer): Integer;
Begin
 Result := Tab[Random(High(Tab))];
End;

W "Tab" są liczby, a funkcja losuje jedną liczbę z tablicy.

0

Dam kawałki kodu i błędy jakie mi wyrzuca.

potwory2 : array of integer;

procedure generujPokoje(numerPokoiku:integer);
begin
  case numerPokoiku of
  1:
    begin
       opisPokoju:='Znajdujesz sie w lesie, przed toba sa dwie sciezki, ktora wybierasz?';
       wschod:= true;
       zachod:= true;
       poludnie:= true;
       E:=2;
       W:=3;
       S:=5;
       maxIndeks:=1;
       SetLength(potwory2, maxIndeks);
       potwory2[0]:= 1;
    end;

Function wylosujPotwora(Tab : Array of Integer): Integer;
Begin
 Result := Tab[Random(maxIndeks)];
End;  

procedure generujPotwora(potworek:integer);
begin
  potwory[0]:='Goblin';
  potwory[1]:='Szczur';
  case potworek of
  0:
    begin
      pNazwa:='Goblin';
      pexp:=25;
      pHp:=80;
      pInt:=2;
      pStr:=6;
      pDex:=4;
      pdef:=4;
    end;

        wylosujPotwora(potwory2);
        generujPotwora(wylosujPotwora);                                                                  

G:\graRPG2.lpr(346,24) Error: Wrong number of parameters specified for call to "wylosujPotwora"
G:\graRPG2.lpr(188,10) Hint: Found declaration: wylosujPotwora(Open Array Of LongInt):LongInt;

0
Result := Tab[Random(maxIndeks)];

IMO, i tak lepiej jest użyć "High"

G:\graRPG2.lpr(188,10) Hint: Found declaration: wylosujPotwora(Open Array Of LongInt):LongInt;

Gdzieś masz najwyraźniej drugi raz funkcję o tej samej nazwie.

0

Mam błąd, było generujPotwora(wylosujPotwora); a powinno być generujPotwora(wylosujPotwora(potwory2));
Dzięki za pomoc :).

1 użytkowników online, w tym zalogowanych: 0, gości: 1