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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Levanoff
0 / 0 / 0
Регистрация: 22.11.2010
Сообщений: 31
#1

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

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

Всем доброго времени суток. В книжке наткнулся на упражнение со случайными числами.Если коротко,то задание следующее - написать ЕДИНСТВЕННЫЙ оператор,который печатает случайное число из набора : 2,4,6,8,10
Как указать именно эти числа?Понятно,что здесь все четные,но как это отразит в rand()?
И еще вопрос вдогонку.
C++
1
n = 2 + rand() % 10;
По идеи,данная переменная может содержать числа в диапазоне от 2 до 10,но на практике,почему-то,диапазон увеличился до 11.Почему так происходит?
Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2011, 14:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Случайные числа в определенном диапазоне (C++):

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

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

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

Проверка условия, чтобы числа могли быть введены только в определенном диапазоне - C++
Здравствуйте. Последовательно пользователь вводит пять чисел, значениях которых присваиваются пяти переменным(n1,n2,n3,n4,n5). ...

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

Отобразить каждое число в диапазоне, определенном двумя числами - C++
Подскажите, пожалуйста, как изменить код, чтобы введенное число k, не входило в вывод. d не входит вывод, как и нужно. #include...

6
fasked
Эксперт С++
4963 / 2543 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 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
Levanoff
0 / 0 / 0
Регистрация: 22.11.2010
Сообщений: 31
30.03.2011, 15:02  [ТС] #3
Спасибо.
Я не так долго давно начал изучать С++,поэтому еще не во все въезжаю. К тому же в книге,по которой я занимаюсь, про rand написано следующее: number=shiftValue + rand() % scalingFactor;
где shiftValue - первое число в диапазоне,а scalingFactor - ширина этого диапазона.
Вот из этого я и исходил.
0
dihlofos
Бродяга
304 / 258 / 17
Регистрация: 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
fasked
Эксперт С++
4963 / 2543 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
30.03.2011, 15:16 #5
Цитата Сообщение от Levanoff Посмотреть сообщение
Я не так долго давно начал изучать С++,поэтому еще не во все въезжаю.
Из Си++ здесь надо знать, как обозначаются арифметические операции и что такое rand. Дальше обычная арифметика.
0
Levanoff
0 / 0 / 0
Регистрация: 22.11.2010
Сообщений: 31
30.03.2011, 15:36  [ТС] #6
Спасибо за помощь!Что-то меня в небольшой тупняк ставит % вкупе с rand,но надо потренироваться и думаю все получится.
0
Nameless One
Эксперт С++
5780 / 3429 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
30.03.2011, 15:59 #7
Levanoff, % - остаток от целочисленного деления.
rand() - псевдослучайное целое число из отрезка [0;RAND_MAX]
0
30.03.2011, 15:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2011, 15:59
Привет! Вот еще темы с ответами:

Найти из массива пары чисел, сумма которых укладывается в определенном диапазоне - C++
доброго времени суток. задача состоит в том, чтобы подсчитать количество чисел в интервале таких, что в массиве существует хотя бы одна...

Написать игру “Угадай число!”. Компьютер загадывает число в определенном диапазоне, а пользователь пытается его угадать - C++
помогите решить Написать игру “Угадай число!”. Компьютер загадывает число в определенном диапазоне, а пользователь пытается его...

Нужно чтобы случайные числа вставали в конец массива,а не удаляли числа - C++
#include <iostream> using namespace std; void main() { setlocale(LC_ALL, "Russian"); int n; // кол-во элементов массива ...

случайные числа - C++
rand() в VS имеет диапазон от 0 до 32768? даже изменение RAND_MAX ничего не повысит верхний уровень?


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.