Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

генератор


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]

занеси нужный диапазон чисел в список или массив и выбирай случайный индекс, при этом удаляя число.


Наверх

Титульная страница Поиск, карта сайта Написать письмо