Maszyna losująca

0

Mam2 problemy

  1. chodzi mi o maszynę losującą z tablicy
    mam coś takiego

var
x : array[1..19] of String;
begin
x[1] := 'ccc';
x[2] := 'bbb ';
x[3] := 'aaa';
{nie wiem jak wylosowa zmienną x}
showmessage({ni wim co tu wpisac});

  1. coś podobnego ale żeby jeszcze dzieliło na grupy po 4 i się nie powtarzało. (coś jak na zawodach pikarskich np MŚ lub Euro :) ).
    potrzebuję pilnej pomocy
0

Ad 1. Nie losujesz x tylko jakiś index :

var i : Byte;
Begin
...
Randomize;
i := Random(19)+1;
ShowMessage(x[i]);
End;

Ad 2. Podziału na 4 grupy nie za bardzo rozumiem, a jeśli chodzi o powtarzanie to możesz zrobić tablice w której będziesz przechowywał wylosowane liczby i po losowaniu sprawdzał czy się nie powtarzają.

P.S. pewnie strzeliłem jakieś byki : )

0

Jak juz WIELOKROTNIE bylo pisane na forum, losowanie bez powtarzania najprosciej zrobic losujac z TStringList i usuwajac z niej juz wylosowane stringi.

0

, a jeśli chodzi o powtarzanie to możesz zrobić tablice w której będziesz przechowywał wylosowane liczby i po losowaniu sprawdzał czy się nie powtarzają.

Nie zebym byl idealista, ale to cienkie rozwiazanie, bo teoretycznie mogloby pod rzad wylosowac 100000 razy ta sama liczbe :) . Lepiej jesli masz nie losowac np. liczby 5 i 10 zrobic tak:
a1:= Random(19-2)+1 //czyli o tyle liczb mniej ile nie moze zostac wylosowanych.
//I teraz sprawdzasz czy
If a1 >= 5 then Inc(a1);
If a1 >= 10 then Inc(a1);

0
  1. http://vcl.4programmers.net/viewapi.php?id=126
  2. Bez powtórzeń: patrz odpowiedź pq.
0

//I teraz sprawdzasz czy
If a1 >= 5 then Inc(a1);
If a1 >= 10 then Inc(a1);

ja tez idealistą nie jestem : ) ale Twoje rozwiązanie jest chyba statystycznie niepoprawne ; p

0

Eh dobra, maly error :-/

To najlepiej zapisac np. w drugiej tablicy ktore byly wylosowane jako boolean i wtedy dac tak:

[code]
a3:= 1; //liczba ostateczna
a2:= 1;
While a2 a1 do
begin
If Tab[a3] = False then Inc(a2);
Inc(a3);
end;
[/code]

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