Форум программистов, компьютерный форум CyberForum.ru

Как заставить rand() выдавать числа в нужном интервале - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Kolia
Сообщений: n/a
24.08.2009, 00:35     Как заставить rand() выдавать числа в нужном интервале #1
Нужны случайные числа в диапазоне от 0 до Х, где Х - каждый раз другое число. rand() генерирует их, но их нельзя коноролировать. Может кто знает как тут быть?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.08.2009, 00:35     Как заставить rand() выдавать числа в нужном интервале
Посмотрите здесь:

Отрицательный числа в rand() C++
C++ вещественные числа через rand
C++ Как заставить внешнее приложение позиционироваться в нужном месте
Как модернизировать функцию rand, что бы числа генерировались на заданом промежутке от a до b ? C++
числа которые в интервале(100-200) читаются как с начала так и с конца C++
Rand, которая генерирует как целые, так и дробные числа C++
Rand() как именно генерируются эти числа C++
Rand() создает одинаковые числа C++
Почему rand() выдает не те числа, которые я ожидаю C++
C++ Rand(), генерирование случайных чисел в заданном интервале
C++ Rand() генерирует одни и те же числа
C++ Rand() исключение числа

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
boombastik
7 / 7 / 0
Регистрация: 13.02.2007
Сообщений: 1,255
24.08.2009, 12:15     Как заставить rand() выдавать числа в нужном интервале #2
Если речь идет о VC++, то ф-ция rand генерирует случайные числа в диапазоне от 0 до RAND_MAX (не забудь про srand перед использованием rand, что-то вроде srand(time(NULL)) ).

Для того чтобы привести сгенерированное число к нужному диапазону можно воспользоваться простейшим преобразованием:

int n = (int)((double)rand()/RAND_MAX * nUpperBound);

где nUpperBound - верхняя граница диапазона, то есть сгенерированные таким образом числа будут лежать в диапазоне от 0 до nUpperBound. Для того, чтобы отвязаться от 0 используй сдвиг '+/- nShift'.

Однако, совсем недавно я увидел совершенно гениальное решение для задания диапазона, гораздо лучше того что приходит с ходу в голову.

См. конференцию (обязательно посмотри)
http://www.relib.com/forums/topic.asp?id=785494

Удачи, Владимир
Kolia
Сообщений: n/a
24.08.2009, 22:03     Как заставить rand() выдавать числа в нужном интервале #3
Rabotajet
Yandex
Объявления
24.08.2009, 22:03     Как заставить rand() выдавать числа в нужном интервале
Ответ Создать тему
Опции темы

Текущее время: 05:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru