Losowanie określonych liczb

Losowanie określonych liczb
MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 13
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.

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
1

Chwila namysłu:

Kopiuj
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.

MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 13
0

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

Kopiuj
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;

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0
Kopiuj
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.

MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 13
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.