Delphi: Сформировать массив на основе другого по правилу
Метки: [без меток]
Имеется массив population. Необходимо получить массив pairs, который того же типа что и population, но в нем элементы должны быть расфасованы случайно на основе массива population.
Пример:
population[0] = 1;
population[1] = 5;
population[2] = 153;
population[3] = 12;
pairs = getPairs(population);
pairs[0] = 5;
pairs[1] = 1;
pairs[2] = 153;
pairs[3] = 12;
Ф-ия getPairs вызывается в цикле, поэтому крайне важно чтобы массив pairs отличался от массива pairs на предыдущем шаге цикла.
Спасибо
shuffle не гарантирует, что массив обязательно изменится.
Да я забыл приписать, что "массив pairs чаще отличался от массива pairs на предыдущем шаге цикла"
Вот что было найдено:
x: array[0..n-1] for i:=n downto 2 do begin j:=random(i); t:=x[i-1]; x[i-1]:=x[j]; x[j]:=t; end;