Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Функция random

3.4K
21 апреля 2003 года
hard
8 / / 21.04.2003
Скажите люди добрые! Как можно в массив записать 50 случайных чисел (от 1 до 50) так, чтобы они не повторялись? Если делаю обычную проверку (мол если число уже в массиве есть, то random еще раз), то это дело затягивается на очень длительно время...
1.9K
21 апреля 2003 года
kswapd
93 / / 08.02.2003
Цитата:
Originally posted by hard
Скажите люди добрые! Как можно в массив записать 50 случайных чисел (от 1 до 50) так, чтобы они не повторялись? Если делаю обычную проверку (мол если число уже в массиве есть, то random еще раз), то это дело затягивается на очень длительно время...



Код:
#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);
}


Идея понятна? Инициализируем массив последовательными числами 1..50, потом меняем 50 со случайным от [1] до [49], 49 с числом от [1] до [48] и т. д.
3.4K
21 апреля 2003 года
hard
8 / / 21.04.2003
kswapd! Благодарю за идею!
1.9K
22 апреля 2003 года
kswapd
93 / / 08.02.2003
Цитата:
Originally posted by hard
kswapd! Благодарю за идею!



Всегда пожалуйста :) Кстати, алгоритм-то стандартный довольно.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог