#include <stdlib.h>
int main(int argc, char **argv)
{
int array[50];
int i, n, t;
for(i=0;i<50;i++)
array=i+1;
for(i=(50-1);i>=0;i--) {
n = (rand()/(double)RAND_MAX) * i;
t = array[n];
array[n] = array;
array = t;
}
for(i=0;i<50;i++)
printf("%d\n",array);
}
Функция random
Скажите люди добрые! Как можно в массив записать 50 случайных чисел (от 1 до 50) так, чтобы они не повторялись? Если делаю обычную проверку (мол если число уже в массиве есть, то random еще раз), то это дело затягивается на очень длительно время...
Цитата:
Originally posted by hard
Скажите люди добрые! Как можно в массив записать 50 случайных чисел (от 1 до 50) так, чтобы они не повторялись? Если делаю обычную проверку (мол если число уже в массиве есть, то random еще раз), то это дело затягивается на очень длительно время...
Скажите люди добрые! Как можно в массив записать 50 случайных чисел (от 1 до 50) так, чтобы они не повторялись? Если делаю обычную проверку (мол если число уже в массиве есть, то random еще раз), то это дело затягивается на очень длительно время...
Код:
Идея понятна? Инициализируем массив последовательными числами 1..50, потом меняем 50 со случайным от [1] до [49], 49 с числом от [1] до [48] и т. д.
kswapd! Благодарю за идею!
Цитата:
Originally posted by hard
kswapd! Благодарю за идею!
kswapd! Благодарю за идею!
Всегда пожалуйста :) Кстати, алгоритм-то стандартный довольно.