Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рандомная задержка на Си, Аналог sleep из Delphi в Си 
V
    Опции темы
Canada
Дата 3.8.2011, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 9.2.2009

Репутация: нет
Всего: нет



Здравствуйте. 

Нужные себе программы пишу на Delphi, а тут потребовалось скорректировать маленький кусочек кода на Си под Posix.

Требуется аналог конструкции Delphi вида

x := RandomRange (2000, 3000);
...
Sleep (x);

Т.е. рандомно выбранное число из интервала в качестве задержки, паузы.

Заранее благодарен за Вашу помощь.

 smile 

Спасибо!

PM MAIL   Вверх
boostcoder
Дата 3.8.2011, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



вот:
Код

#include <iostream>
#include <cstdlib>

int random_range(int min, int max) {
   return rand()%(max-min+1)+min;
}

int main() {
   for ( int idx = 0; idx < 100; ++idx ) {
      std::cout << random_range(2000, 3000) << std::endl;
   }
   
   // usleep(in microseconds);
}


http://liveworkspace.org/code/1ab1524d5d79...4f1fc626e9ea2c7
PM WWW   Вверх
Canada
Дата 3.8.2011, 00:26 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 9.2.2009

Репутация: нет
Всего: нет



Ого! Не кисло. Я и не знал, что на Си такое простое действие займет столько строк кода. Спасибо большое!

А варианта попроще нет?
PM MAIL   Вверх
volatile
Дата 3.8.2011, 01:30 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(Canada @  3.8.2011,  00:26 Найти цитируемый пост)
А варианта попроще нет? 

Canada, вам привели функцию, вместе с примером работы. Все что вам надо, это
Цитата(boostcoder @  3.8.2011,  00:20 Найти цитируемый пост)
rand()%(max-min+1)+min;

Очень сложно ?



PM MAIL   Вверх
Canada
Дата 3.8.2011, 06:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 9.2.2009

Репутация: нет
Всего: нет



volatile, если честно, то, судя по всему - да. Т.к. я не понял, где тот кусочек кода, который мне надо copy и paste в уже существующий проект. Я ведь Си, увы, совсем не знаю.:(
PM MAIL   Вверх
boostcoder
Дата 3.8.2011, 06:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



Canada, лови:
Код

usleep((rand()%(3000-2000+1)+2000)*1000);

эту строку и вставляй.


Это сообщение отредактировал(а) boostcoder - 3.8.2011, 06:56
PM WWW   Вверх
bsa
Дата 3.8.2011, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Более корректно (распределение будет более равномерным):
Код
int x = (int)(rand() * (double)(range_max - range_min) / RAND_MAX + range_min);
...
usleep(x);

PM   Вверх
Canada
Дата 3.8.2011, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 9.2.2009

Репутация: нет
Всего: нет



Спасибо Вам всем Огромное за помощь! Очень помогли! Спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0490 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.