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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ввод целого предложения в массив с клавиатуры http://www.cyberforum.ru/cpp-beginners/thread478479.html
Народ, трэба подмога. Задача: Ввожу с клавиатуры предложение. Сохраняю его в массиве. Далее это предложение (массив) анализирую (но это уже не важно). После ввожу другое предложение с клавиатуры. И...
C++ Как поставить обновления для CBuilder6? Кто знает скажите пожалста, как апдейты поставить для билдера 6 триал? Или буду очень блогадарен, если кто даст скачать не триальную версию. http://www.cyberforum.ru/cpp-beginners/thread478413.html
C++ Как написать программу "сидящую" в трее?
Собственно сабж на С++, можно Delphi.
C++ А как сделать что бы случайное число было от 20 - 50?
Нужно получить случайное число в диапазоне к примеру от 0 - 50; int i = rand()%51; А как сделать что бы случайное число было от 20 - 50. (Не исползуя do while(...)).
C++ Хранение массива объектов в COM-объекте http://www.cyberforum.ru/cpp-beginners/thread478346.html
в общем такая у меня проблема: есть Automation Server. в нем массив объектов. я хочу предусмотреть в интерфейсе функцию, дающую ссылку на элемент массива по ключу. объкты в массиве типа ATL-класс....
C++ Когда есть альфа (A89), то теряется 0 конце, т.е. 01 вместо 010. Как исправить? Y menya est' sledyuzaya procedure. Gde transliryetcya alpha to numeric (a-010,b-020,c-030....) Kogda est' alpha (A89) teryaetcya 0 v konze t.e.01 vmesto 010. Kak eto ispravit? int... подробнее

Показать сообщение отдельно
boombastik
7 / 7 / 0
Регистрация: 13.02.2007
Сообщений: 1,255
24.08.2009, 12:15
Если речь идет о 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

Удачи, Владимир
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru