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

Разобраться в параметрах rand() - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 189, средняя оценка - 4.81
svkpro
 Аватар для svkpro
8 / 8 / 0
Регистрация: 07.12.2012
Сообщений: 143
21.12.2012, 15:17     Разобраться в параметрах rand() #1
помогите разобраться пожалуйста) вот я в элемент массива возвращаю случайное число:
Код
a[i][j]=n+(rand()%(n-n1+1));
это я сделал по аналогии : rand() % (max-min+1) + min
помогите разобраться в параметрах) допустим я хочу чтобы функция генерировала двузначные числа ну и т.д.
в msdn смотрел там только это описание( может я плохо смотрел))) подкиньте если можно ссылку на статейку, книжку или может кто может исчерпывающе пояснить.
спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2012, 15:17     Разобраться в параметрах rand()
Посмотрите здесь:

bool в параметрах функции C++
О формальных параметрах C++
C++ Указатели в параметрах функции
C++ Таблица в параметрах функции
Получить сведения о текущих параметрах компьютера C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rus_phantom
6 / 6 / 1
Регистрация: 31.03.2011
Сообщений: 69
21.12.2012, 15:41     Разобраться в параметрах rand() #2
Функция rand() возвращает значение от 0 до ~32 тысяч. Для того чтобы получить значение от 0 до 90, нужно написать так:
C++
1
rand()%90
А от 10 до 100 то так:
C++
1
rand()%90+10
ZaMaZaN4iK
Мой лучший друг-отладчик!
 Аватар для ZaMaZaN4iK
163 / 163 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
21.12.2012, 15:46     Разобраться в параметрах rand() #3
svkpro не забудьте ещё перед rand() заюзать srand()
svkpro
 Аватар для svkpro
8 / 8 / 0
Регистрация: 07.12.2012
Сообщений: 143
21.12.2012, 15:51  [ТС]     Разобраться в параметрах rand() #4
Цитата Сообщение от ZaMaZaN4iK Посмотреть сообщение
svkpro не забудьте ещё перед rand() заюзать srand()
ну я эту функцию так использую:
Код
srand( (unsigned)time( NULL ) );
если можно как то еще подскажите)
Arigato
Программист
 Аватар для Arigato
278 / 175 / 94
Регистрация: 05.12.2013
Сообщений: 568
Записей в блоге: 5
14.12.2013, 11:42     Разобраться в параметрах rand() #5
C++
1
srand(time(NULL));
kpoxaa
70 / 31 / 1
Регистрация: 03.08.2012
Сообщений: 446
11.02.2014, 02:28     Разобраться в параметрах rand() #6
Цитата Сообщение от rus_phantom Посмотреть сообщение
А от 10 до 100 то так: rand()%90+10
Ваш пример сложен для понимания. Логичнее (на мой взгляд) это делать так:

C++
1
rand() % (100 - 10+1) + 10;
Добавлено через 1 минуту
Цитата Сообщение от svkpro Посмотреть сообщение
если можно как то еще подскажите)
для особых извращенцев можно так

C++
1
srand(time(0));
но это все одно и тоже.
salam
157 / 138 / 11
Регистрация: 10.07.2012
Сообщений: 709
11.02.2014, 16:47     Разобраться в параметрах rand() #7
Цитата Сообщение от kpoxaa Посмотреть сообщение
rand() % (100 - 10+1) + 10;
вроде как автор хотел от числа из [10, 99].
ну тогда только
C++
1
rand() % 90 + 10;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2014, 17:02     Разобраться в параметрах rand()
Еще ссылки по теме:

C++ Ключевое слово class в параметрах функции
C++ Вернуть строку в параметрах
Условие выполняется при любых параметрах C++

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,039
11.02.2014, 17:02     Разобраться в параметрах rand() #8
Цитата Сообщение от salam Посмотреть сообщение
ну тогда только
есть еще один путь
говорят у него распределение лучше
C++
1
2
3
4
5
6
7
int fncRand(int min, int max)
{
double tmp=rand()/RAND_MAX;
tmp=tmp*(max-min);
return tmp+min;
 
}
если изменить порядок вычислений то можно обойтись без double, правда возможно переполнение
C++
1
2
3
4
5
6
int fncRand(int min, int max)
{
int tmp=rand()*(max-min);
tmp=tmp/RAND_MAX;
return tmp+min;
}
Добавлено через 2 минуты
Цитата Сообщение от rus_phantom Посмотреть сообщение
Для того чтобы получить значение от 0 до 90, нужно написать так:
C++
1
rand()%90
до 89
Yandex
Объявления
11.02.2014, 17:02     Разобраться в параметрах rand()
Ответ Создать тему
Опции темы

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