![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Функция 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;