Тасование колоды:
Цитата:
Алгоритм #4.
Код: 
1. ячейки вектора инициализируются значениями своих индексов
2. R{ight} ← N {"текущая" длина вектора}
3. генерируется случайное число K из интервала 1..R
4. обмен содержимым между K-й и R-й ячейками
5. R ← R-1
6. if R = 1 then Exit
7. переход к шагу 3
Приведенный механизм известен под именем алгоритма "тасования колоды". Его легко переписать, используя уже знакомые нам процедуры, приходится лишь заменить интервал 0..N-1 на 1..N.
Код: 
type
index = 1..N; {N>1}
massive1 = array [index] of index;
procedure RandomN(var Mas: massive1);
var i, K: index;
begin
for i := 1 to N do Mas[i] := i;
Randomize;
for i := N downto 2 do begin
K := Random(i) + 1;
Swap(Mas[K], Mas[i]);
end;
end;
|
Соответственно, получение 5 карт можно дать так:
1. Инициализируем массив, от 1 до 52, Перемешиваем массив - RandomN()
2. Берём его первые 5 элементов.