7 / 7 / 0
Регистрация: 06.09.2014
Сообщений: 257
1

Сгенерировать случайные числа от 1000 до 1112

16.09.2015, 03:00. Показов 2821. Ответов 37
Метки нет (Все метки)

C++
1
2
3
4
5
for (int i = 1; i <= 10; i++)
    {
        n = 1000 + rand () % 1112;
        cout << n << endl;
    }
Почему вылазят цифры 2062, 1766 и т.д., то есть больше 1112?

Добавлено через 2 минуты
и как понять фразу "1000 <= n ? 1112" ?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.09.2015, 03:00
Ответы с готовыми решениями:

Сгенерировать случайные числа
сгенерировать случайные числа 1) целое в интервале от 0 до 67. 2) целое двухзначное. 3)...

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

Как сгенерировать случайные числа?
Как сгенерировать случайные числа?

Сгенерировать случайные числа в диапазоне от 1 до 20
Задача такова: Нужно написать рендум чисел в диапазоне например от 1 до 20 (не имеет значения). С...

37
lss
939 / 867 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
16.09.2015, 03:10 2
Цитата Сообщение от тимур05_2 Посмотреть сообщение
то есть больше 1112?
К ним же 1000 прибавляется, вот и получается больше.

Добавлено через 2 минуты
Цитата Сообщение от тимур05_2 Посмотреть сообщение
и как понять фразу "1000 <= n ? 1112" ?
Полное выражение приведи.
1
Заблокирован
16.09.2015, 05:53 3
C++
1
n = 1000 + rand () % 113;
0
2644 / 2220 / 239
Регистрация: 03.07.2012
Сообщений: 8,060
Записей в блоге: 1
16.09.2015, 08:44 4
Цитата Сообщение от тимур05_2 Посмотреть сообщение
Почему вылазят цифры 2062, 1766 и т.д., то есть больше 1112?

Не по теме:

Программа работает так, как программист написал, а не как ему надо. :)

1
7167 / 6142 / 2802
Регистрация: 14.04.2014
Сообщений: 26,462
16.09.2015, 08:57 5
При использовании % нарушается равномерное распределение.
1
Модератор
Эксперт С++
12453 / 10015 / 6027
Регистрация: 18.12.2011
Сообщений: 26,813
16.09.2015, 09:04 6
nmcf, я полагаю, что для тимур05_2 это не принципиально.
0
7 / 7 / 0
Регистрация: 06.09.2014
Сообщений: 257
16.09.2015, 10:18  [ТС] 7
lss, взято из учебника по С++. Одно из упражнений.
Миниатюры
Сгенерировать случайные числа от 1000 до 1112  
0
Модератор
Эксперт С++
12453 / 10015 / 6027
Регистрация: 18.12.2011
Сообщений: 26,813
16.09.2015, 10:57 8
тимур05_2, зачем тогда из очевидной опечатки делать проблему?
0
7 / 7 / 0
Регистрация: 06.09.2014
Сообщений: 257
16.09.2015, 12:47  [ТС] 9
zss, я думал это разновидность тернарной операции "?:". То есть там должно быть "<=" ?
0
2644 / 2220 / 239
Регистрация: 03.07.2012
Сообщений: 8,060
Записей в блоге: 1
16.09.2015, 13:07 10
Цитата Сообщение от nmcf Посмотреть сообщение
При использовании % нарушается равномерное распределение.
И... (к чему было это замечание) ?
1. В условии нет требования равномерности
2. Даже если бы оно было, отклонение от идеала небольшое и им часто можно пренебречь.
0
Модератор
Эксперт С++
12453 / 10015 / 6027
Регистрация: 18.12.2011
Сообщений: 26,813
16.09.2015, 14:16 11
Цитата Сообщение от тимур05_2 Посмотреть сообщение
То есть там должно быть "<=" ?
Ну, если в 5 примерах написано <=, то с какой стати в шестом должно быть что-то другое?
0
7 / 7 / 0
Регистрация: 06.09.2014
Сообщений: 257
16.09.2015, 14:48  [ТС] 12
zss, бывают каверзные задачки, проверить бдительность так сказать. Я так понял, что разновидности нет?

Добавлено через 14 минут
Цитата Сообщение от MansMI Посмотреть сообщение
Код C++Выделить код
n = 1000 + rand () % 113;
работает, спасибо. Но почему 113? Если взять рандом для игральной кости от 1 до 6, то все работает так
C++
1
n = 1 + rand() % 6;
... постой-ка постой-ка, если ставишь от 10 до 100, то он рандомирует от 10 до 10+100? А если ставишь от 1000 до 1112, то на самом деле от 1000 до 2112?

Добавлено через 1 минуту
то что и было сказано во 2-ом посте

Добавлено через 1 минуту
Цитата Сообщение от nmcf Посмотреть сообщение
При использовании % нарушается равномерное распределение.
а что за распределение такое?

Добавлено через 1 минуту
Цитата Сообщение от тимур05_2 Посмотреть сообщение
Код C++
n = 1 + rand() % 6;
тогда рандом должен быть от 1 до 7? Но это не происходит, почему?

Добавлено через 5 минут
по поводу рандом от 1 до 7 понял, можно не отвечать.
0
7167 / 6142 / 2802
Регистрация: 14.04.2014
Сообщений: 26,462
16.09.2015, 16:06 13
Цитата Сообщение от zer0mail Посмотреть сообщение
к чему было это замечание
К тому, что все лепят % и не думают. По смыслу оно должно быть равномерным.
Цитата Сообщение от тимур05_2 Посмотреть сообщение
а что за распределение такое?
Теорию вероятностей посмотри. Это значит, что появление всех чисел диапазона равновероятно.
0
34 / 34 / 36
Регистрация: 22.05.2015
Сообщений: 146
16.09.2015, 16:18 14
Почему нельзя использовать такую функцию?
C++
1
2
3
4
5
int random(int min, int max)
{
      int result = min + rand() % (max - min + 1);
      return result;
}
Она вроде универсальная и простая.
0
Модератор
Эксперт С++
12453 / 10015 / 6027
Регистрация: 18.12.2011
Сообщений: 26,813
16.09.2015, 16:30 15
awalio, тогда уж рекомендованную
C++
1
2
3
4
5
double random(double min, double max)
{
      double result = min + (double)rand()/RAND_MAX *(max - min);
      return result;
}
2
7 / 7 / 0
Регистрация: 06.09.2014
Сообщений: 257
16.09.2015, 18:29  [ТС] 16
Спасибо всем за помощь
0
Эксперт С++
4978 / 3085 / 456
Регистрация: 10.11.2010
Сообщений: 11,164
Записей в блоге: 10
16.09.2015, 19:26 17
Цитата Сообщение от nmcf Посмотреть сообщение
К тому, что все лепят % и не думают.
Так это ж студенты. Зачем им думать на данном этапе..
У них стоит задача написать программу, и на равномерность им наплевать.
0
803 / 530 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
16.09.2015, 19:31 18
nmcf, можно ли нарушить равновероятность выпадения чисел перезасеиванием генератора псевдослуч. чисел (например в цикле на каждую итерацию)?
0
7167 / 6142 / 2802
Регистрация: 14.04.2014
Сообщений: 26,462
16.09.2015, 21:09 19
Думаю, да.
0
803 / 530 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
16.09.2015, 21:13 20
nmcf, я считаю, что исходы броска кубика или монеты или выпадения опр. чисел применительно к реальности не должны распределяться равномерно, поэтому и спросил про перезасеивание.
Примером может служить рулетка в казино, вот там вобще ни о каком равномерном распределении и речи быть не может.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.09.2015, 21:13
Помогаю со студенческими работами здесь

Как сгенерировать такие случайные числа?
4287709036.32353 5765613642.35294 7896396583.23529 и как перевести такое число в...

Сгенерировать случайные числа в массиве методом
Привет:) Помогите сгенерировать случайные числа массива методом, отдельно от самого массива Можно...

Сгенерировать случайные числа без повторений
Нужно выбрать 8 чисел в диапазоне от 1 до 16 включительно, чтоб они не повторялись. и записать в...

Сгенерировать случайные двоичные числа в диапазоне от a до b
Помогите написать программу, даже не знаю с какой стороны к ней подойти, вот задание: Написать...

нужно с помощью exсel сгенерировать случайные числа.
Помогите, пожалуйста, нужно с помощью exсel сгенерировать случайные числа. Проблема в том какие...

Как сгенерировать случайные числа в заданном интервале?
как правильно сгенерировать вещественный массив на промежутке mas = (float)(rand()%20001)/50); ...


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

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

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