Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 22.11.2010
Сообщений: 31
1

Случайные числа в определенном диапазоне

30.03.2011, 14:42. Показов 1880. Ответов 6
Метки нет (Все метки)

Всем доброго времени суток. В книжке наткнулся на упражнение со случайными числами.Если коротко,то задание следующее - написать ЕДИНСТВЕННЫЙ оператор,который печатает случайное число из набора : 2,4,6,8,10
Как указать именно эти числа?Понятно,что здесь все четные,но как это отразит в rand()?
И еще вопрос вдогонку.
C++
1
n = 2 + rand() % 10;
По идеи,данная переменная может содержать числа в диапазоне от 2 до 10,но на практике,почему-то,диапазон увеличился до 11.Почему так происходит?
Спасибо.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.03.2011, 14:42
Ответы с готовыми решениями:

Случайные числа в диапазоне от -m до +m
Всем привет. Пытаюсь сделать рандом от -m до +m(где m обычное число). Выглядит примерно так: int...

Случайные числа в заданном диапазоне
Подскажите как написать программу, которая генерирует последовательность из N случайных чисел в...

Записать в вектор случайные числа в заданном диапазоне
нужно записать в вектор от 10 до 15 случайных чисел от -10 до 10 сделал вот так #include...

Вывести все целые числа в определенном диапазоне
Подскажите пожалуйста по решению задачи Задача: Напишите программу, которая запрашивает у...

6
Эксперт С++
5027 / 2606 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
30.03.2011, 14:55 2
Levanoff, а Вы посчитать пробовали вообще? Максимальное возможный результат от (x % 10) равен 9, далее (9 + 2) = 11. Магия!

Добавлено через 5 минут
Цитата Сообщение от Levanoff Посмотреть сообщение
ЕДИНСТВЕННЫЙ оператор,который печатает случайное число из набора : 2,4,6,8,10
2 * (rand() % 5 + 1)
1
0 / 0 / 0
Регистрация: 22.11.2010
Сообщений: 31
30.03.2011, 15:02  [ТС] 3
Спасибо.
Я не так долго давно начал изучать С++,поэтому еще не во все въезжаю. К тому же в книге,по которой я занимаюсь, про rand написано следующее: number=shiftValue + rand() % scalingFactor;
где shiftValue - первое число в диапазоне,а scalingFactor - ширина этого диапазона.
Вот из этого я и исходил.
0
Бродяга
313 / 267 / 56
Регистрация: 27.08.2010
Сообщений: 553
30.03.2011, 15:13 4
Откопал когда-то написанную ф-цию для решения подобной задачи.
C++
1
2
3
4
int randFromSet( int lower, int step, int amount )
{
     return lower + step * ( rand() % amount );
}
Ф-ция с 3 параметрами, lower - первый элемент набора, step - шаг, amout - кол-во членов (за плохой англицкий если что - извиняюсь). Для твоего случая вызов ф-ции будет:
C++
1
randFromSet( 2, 2, 5 );
1
Эксперт С++
5027 / 2606 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
30.03.2011, 15:16 5
Цитата Сообщение от Levanoff Посмотреть сообщение
Я не так долго давно начал изучать С++,поэтому еще не во все въезжаю.
Из Си++ здесь надо знать, как обозначаются арифметические операции и что такое rand. Дальше обычная арифметика.
0
0 / 0 / 0
Регистрация: 22.11.2010
Сообщений: 31
30.03.2011, 15:36  [ТС] 6
Спасибо за помощь!Что-то меня в небольшой тупняк ставит % вкупе с rand,но надо потренироваться и думаю все получится.
0
Эксперт С++
5820 / 3472 / 357
Регистрация: 08.02.2010
Сообщений: 7,448
30.03.2011, 15:59 7
Levanoff, % - остаток от целочисленного деления.
rand() - псевдослучайное целое число из отрезка [0;RAND_MAX]
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.03.2011, 15:59

Заменить отрицательные числа на случайные в диапазоне в двухмерном массиве
Пользователь вводит массив 3х3. Программа заменяет все отрицательные элементы на случайные числа в...

Найти все совершенные числа через функцию в определенном пользователем диапазоне
Доброго времени суток. Я написал код,который по логике должен работать, но не работает:)...

Сгенерировать случайные числа с плавающей точкой в заданном диапазоне, включающем и отрицательные значения
возникла проблема, не могу решить... раньше когда пользовался функ. ( x + rand() % x ) с целыми...

Проверка условия, чтобы числа могли быть введены только в определенном диапазоне
Здравствуйте. Последовательно пользователь вводит пять чисел, значениях которых присваиваются...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru