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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Random, Где искать? 
:(
    Опции темы
Leksey
Дата 20.3.2005, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Подскажите, в кокой библиотеке найти нормальную функцию генерирования случайных чисел и кокой header подключить, чтобы ей можно было указать интервал,в котором выдавать результат.
PM MAIL   Вверх
Олег М
Дата 20.3.2005, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



а стандартная rand не подходит?
PM MAIL ICQ   Вверх
Leksey
Дата 20.3.2005, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



rand - Как задать ему интервал в которм должен быть результат .
PM MAIL   Вверх
Олег М
Дата 20.3.2005, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Наверное так x[0...N]
Код

 x=(double(rand()) /RAND_MAX)*N

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


Опытный
**


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

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



Конечно можно и так сделать, чтобы выпадало целое [1..N]:
Код

         srand(time(0));
    int s=0;
    for (int i=0;i<2;i++)
    {     
        s=int((double(rand())/(RAND_MAX+1))*N)+1;
                  cout<<s<<endl;
    }


но почему все время сначала выпадает 3, а потом уже произвольное.
Да и хотелось бы не заниматься инициализацией с помощью srand() и ничего не вычислять.
PM MAIL   Вверх
bel_nikita
Дата 20.3.2005, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

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



Код

// [ 1 ... N ]
int x = rand() % N + 1;


Это сообщение отредактировал(а) bel_nikita - 20.3.2005, 22:44


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
Leksey
Дата 20.3.2005, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Блин, вот я намудрил, а все было так банально.
Спаибо bel_nikita.
PM MAIL   Вверх
Goryachev
Дата 21.3.2005, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 23.2.2005
Где: Израиль

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



bel_nikita
Если я хорошо помню, rand() возвращает число между нулем и единицей. Поэтому данным кодом,
Цитата(bel_nikita @ 20.3.2005, 22:43)
// [ 1 ... N ]
int x = rand() % N + 1;

я не понимаю, как ты добиваешся числа больше чем число 1.
Поправь меня, если чо-то не то сшифровал...

Упс. В stdlib.h написано, что rand() возвращает число между нулем и RAND_MAX.
Извиняюсь за глупый пост. Значит в каком то другом языке возвращает между 0 и 1.

Это сообщение отредактировал(а) Goryachev - 21.3.2005, 00:09
PM MAIL   Вверх
versus
Дата 21.3.2005, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 8.3.2005
Где: Переславль-Залесс кий

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



кстати о том что написано:

Код

man rand
...

              "If you want to generate a random integer between 1
              and 10, you should always do it by using high-order
              bits, as in

                     j=1+(int) (10.0*rand()/(RAND_MAX+1.0));

              and _never_ by anything resembling

                     j=1+(rand() % 10);

              (which uses lower-order bits)."
...



Вопрос на засыпку: что произойдет если описанной выше методой (int x = rand() % N + 1;) попытаться сгенерировать случайное число с N > RAND_MAX ?

Это сообщение отредактировал(а) versus - 21.3.2005, 00:45
PM MAIL WWW   Вверх
bel_nikita
Дата 21.3.2005, 01:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

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



Получим: RAND_MAX + 1 < N


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
jorkug
Дата 21.3.2005, 06:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

int a =  rand() % (max - min +1)  + min;

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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