Форум: "Основная";
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];
ВнизОдномерный массив. Как заполнить числами от 1 до 10? Найти похожие ветки
← →
Fantasist (2002-04-04 06:48) [17]Не, оба этих алгоритма неэффективны - они основаны на той же проверке от которой хотели уйти. Если диапазон большой, то количество повторно выпадающих элементов может стать довольно большим особенно ближе к полному заполнению массива.
Я бы предложил такой алгоритм:
var
a1: array [1..10] of integer=(1,2,3,4,5,6,7,8,9,10);
a: array [1..10] of integer;
k: integer;
i: integer;
begin
for i:=0 to 9 do
begin
k:=random(9-i)+1;
a[i+1]:=a1[k];
a1[k]:=a1[10-i];
end;
end;
это то же, что я описывал выше, однако простаю перетасовку можно провести быстрее и без дополнительного массива, правда что, при моем алгоритме массив будет заполнен более случайно нежели перетасовкой.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.004 c