![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
генератор
xman © (2003-04-17 15:23:00)
Как генерировать случайные числа , что бы они не повторялись.
К примеру для создания карточной игры - расздача карт
Плохой человек (2003-04-17 19:54:00) [1]
Заполняет массив неповторяющимися случайными числами.
procedure FillArray(var A: array of Integer);
var
I, S, R: Integer;
begin
for I := 0 to High(A) do A[I] := I;
for i := High(A) downto 0 do begin
R := Random(I);
S := A[R]; A[R] := A[I]; A[I] := S;
end;
end;
Урб (2003-04-17 18:37:00) [2]
Еще делают завязку рандома на время(секунды).
Anatoly Podgoretsky (2003-04-17 16:43:00) [3]
Повтори 36 раз команду Random(36), но randomize использовать обязательно, кроме случаев когда для тестовой отладки требуется каждый раз одна и таже последовательность.
Arch-vile (2003-04-17 16:39:00) [4]Приведу пример из моей проги:
CellTrue[i] := ciphers[random(length(ciphers)) + 1];
( ciphers, pos(celltrue[i], ciphers)
Приведу пример из моей проги:
CellTrue[i] := ciphers[random(length(ciphers)) + 1];
delete(ciphers, pos(celltrue[i], ciphers), 1);
если что-то непонятно, я виноват :)
k-man (2003-04-17 16:32:00) [5]
2Anatoly Podgoretsky
Разве я буду спорить с мастером :-)
Мотаю на ус...
Anatoly Podgoretsky (2003-04-17 16:28:00) [6]
k-man © (17.04.03 16:22)
randomize не влияет на уникальность последовательности, от только отвечает за выбор этой последовательности, назначая начальное значение RandSeed
k-man (2003-04-17 16:22:00) [7]
Может я неправильно понял вопрос, но чтобы числа при генерации
не повторялись, если я не ошибаюсь, нужно использ. randomize, а потом генерировать число.
Anatoly Podgoretsky (2003-04-17 16:15:00) [8]
Да и еще не надо выдавать карты случайным образом, надо просто тусовать колоду перед сдачей, как и в реальной жизни.
Anatoly Podgoretsky (2003-04-17 16:09:00) [9]
Удобно использовать множеста, это входило как класический пример в старые книги по Паскалю. Но иногда удобнее списки
MBo (2003-04-17 15:51:00) [10]
занеси нужный диапазон чисел в список или массив и выбирай случайный индекс, при этом удаляя число.