Здравствуйте, andrey.desman, Вы писали:
AD>Вот такую задачку получил недавно на собеседовании:
AD>Есть неинициализированный массив из 100 чисел. Дана функция rand(n), которая генерирует случайное число в диапазоне [0, n].
AD>Заполнить массив числами [0, 99] в случайном порядке так, чтобы числа не повторялись.
AD>Как это можно сделать?
Посмотри, как работает типичная реализация std::random_shuffle. И мы точно знаем, что на i-м месте будет стоять число i, поэтому перемешивание можно совместить с инициализацией. Получится как-то так:
for (int i = 1; i < n - 1; ++i ) {
int j = rand(i);
a[i] = a[j];
a[j] = i;
}
ЗЫ. твоё решение с 50-ти индексами, кстати, не будет обладать свойством равномерности распределения
Курица — это инструмент, с помощью которого одно яйцо производит другие.