Форум: "Основная";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];
ВнизГенерация случайных чисел без повторов Найти похожие ветки
← →
Aiax (2003-06-09 12:45) [0]Надо сгенерить миллион 6-значных чисел без повторов. Как это сделать оптимально - пока не знаю. Пробовал каждое вновь создаваемое число сравнивать со всеми предыдущими и пересоздавать его при повторе - но это процесс дико медленный и на моём компе генерация идет минут 30. Подскажите как это сделать быстрее и гарантировано избежать повторений. Заранее спасибо.
← →
DmS (2003-06-09 12:49) [1]был уже такой вопрос как-то ...
смысл в том, что тебе надо перемешать массив чисел идущих по порядку (например по возрастанию - этообеспечит уникальность). перемешиваешь так - просто меняешь местами i-ый и j-ый элементы (i, j - случайные числа).
← →
Aiax (2003-06-09 13:00) [2]Был бы благодарен за фрагментик кода, который сгенерит мне уникальную последовательность, потому что если честно идею DmS не понял
← →
DmS (2003-06-09 13:04) [3]
a : array [1..1000] of integer;
for i:=1 to 1000 do a[i]:=1 000 000 + i;
Randomize;
for i:=1 to 1000 do begin
newPos := Random (1000);
tmpA:= a[newPos];
a[newPos]:=a[i];
a[i]:=tmpA;
end;
код на скорую руку :)
← →
Aiax (2003-06-09 13:19) [4]Хе, код увидел - сразу дошло :) Действительно просто и надежно! Пасибки большое DmS
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.028 c