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

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

Функция random. [D6, Win95/98]


XPatriot[d.m.b] ©   (2003-01-09 00:02:00) 

Уважаемые мастера, есть такая задача:
Есть одномерный массив(1-32) нужно заполнить его цифрами от 1 до 32 и чтоб в конечном щете в массиве были числа от 1 до 32 и не одно не повторялось.


passm   (2003-01-09 15:45:00) [1]

procedure Swap(var x1, x2: Integer);
var
x: Integer;
begin
x:= x1;
x1:= x2;
x2:= x
end;

...
for i:= 1 to 32 do
a[i]:= i;
for i:= 32 downto 1 do
Swap(a[i], a[Random(i) + 1])
...


BALU1111   (2003-01-09 14:19:00) [2]

А если попробывать генерировать массив, и потом проверять на повторения. Если повтор, то в данную цифру надо заменить. Немного требует ресурсов и времени, но у меня работает и не виснет.


XPatriot[d.m.b]   (2003-01-09 14:09:00) [3]

Думкин, не повериш я год назад такую же функцию для своей проги писал, она работала(соглашусь с табой, интересное занятие}, а вот теперь никак, вроде алгоритм придумал, должно работать, а он виснет.


Думкин   (2003-01-09 06:37:00) [4]

Я когда в детстве писал морской бой, то там такую штуку пользовал. Реши сам - это интересно.
Я писал на форте и очень гордился когда получилось - эх, детство золотое.

> Maksss (09.01.03 02:18)
> сгенери свой генеретор ,рандом
> эта глючная функчия возращает из 30 раз одно и тоже число(на
> одной смашине)

Про подобное слышу не первый раз, но ни разу сам не сталкивался.
Randomize - это для разных сеансов, а речь, видимо, шла об одном.


DeMoN-777   (2003-01-09 05:45:00) [5]

>Maksss (09.01.03 02:18)
>эта глючная функчия возращает из 30 раз одно и тоже число(на одной смашине)

А ты про Randomizене забыл ? =)


Maksss   (2003-01-09 02:18:00) [6]

сгенери свой генеретор ,рандом
эта глючная функчия возращает из 30 раз одно и тоже число(на одной смашине)


Neox   (2003-01-09 00:43:00) [7]


var ar: array [1..32] of integer;
b, tmp, tmp1: integer;

begin
Randomize;
for b:=1 to 32 do ar[b] := b;
for b:=1 to 32 do
begin
tmp := ar[b];
tmp1 := Random(32)+1;
ar[b] := ar[tmp1];
ar[tmp1] := tmp;
end;
end;


Наверх

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