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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 35, средняя оценка - 4.69
Brodyg
0 / 0 / 0
Регистрация: 20.07.2010
Сообщений: 29
#1

Генерация случайных чисел (rand () % 6) - C++

22.07.2010, 19:27. Просмотров 4744. Ответов 8
Метки нет (Все метки)

Приветствую всех.
Изучаю "С" с нуля, дошел до генерации случайных чисел. С генерацией все ясно, не могу понять только зачем здесь взятие по модулю (rand () % 6) ? это программа с подбрасыванием игральной кости. Я знаю, что операция взятие по модулю это вычисление остатка от деления двух чисел, а где тут два числа? шестерка вроде должна говорить ранду, что случайные числа должны быть с генерированный от 0 до 6.
Общем не пойму зачем там взятие по модулю надо, и для чего.
Вот вся программа на всякий случай: Заранее спасибо!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/*Генерация целых 1 + rand () % 6 в масштабе и со сдвигом */
#include <stdio.h>
#include <stdlib.h>
 
main ()
{
   int i;
 
   for (i = 1; i <= 20; i++) {
      printf ("%10d", 1 + (rand () % 6 ));
 
      if (i % 5 == 0)
         printf ("\n");
   }
   return 0;
}
 Комментарий модератора 
Используйте соответствующие теги для оформления кода
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.07.2010, 19:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Генерация случайных чисел (rand () % 6) (C++):

Генератор случайных чисел (без rand) - C++
Помогите пожалуйста , нужен Генератор случайных чисел без использования rand() на с++. Спасибо

Создать массив случайных чисел в с++, используя rand - C++
как это сделать ? вот объявляем массив ,например: int mas ,как сделать так , чтоб он заполнялся случайными числами ? помогите пожалуйста

Rand(), генерирование случайных чисел в заданном интервале - C++
дана функция int MyDblRand(double a,double b) надо написать так что когда будем вызывать функцию в мейн , и напишем там цифры .например...

Генерация случайных чисел - C++
Подскажите пожалуйста правильно ли я осуществил перевод строк из С в С++, сомневаюсь С - randomize(); С++ - srand(NULL); С ...

Генерация случайных чисел - C++
Как в С сгенирировать последовательность случайных чисел от x до y.Например от 1 до 100.

Генерация случайных чисел - C++
Для генерации случайных чисел использую выражение: x = rand() % 4; Библиотеку &lt;cstdlib&gt; компилятор подключать не требует (VS12). ...

8
besstiaa
94 / 94 / 7
Регистрация: 04.06.2010
Сообщений: 223
22.07.2010, 19:36 #2
Brodyg,rand() как раз и генерирует число. В каком диапазоне не помню, врать не буду. Это число может оказаться и 5, и 50, и 5000 и т.п. Вам нужно от 1 до 6. Значит берется остаток от деления рандомного числа на 6. Этот остаток может быть 0,1,2,3,4,5. Осталось прибавить единичку, чтобы было от 1 до 6.
1
MikeSoft
Эксперт С++
3801 / 1777 / 85
Регистрация: 21.11.2009
Сообщений: 2,540
22.07.2010, 19:39 #3
rand() генерирует число в интервале [0;RAND_MAX]

RAND_MAX - число, которое объявлено в cstdlib и равно 32767.

А вот ограничитель диапазона получают как раз функцией остатка от деления - %

При взятии остатка от выражения [n,m] наименьший возможный остаток будет равен нулю, а наибольший равен m-1
1
easybudda
Модератор
Эксперт CЭксперт С++
9677 / 5627 / 953
Регистрация: 25.07.2009
Сообщений: 10,800
22.07.2010, 19:40 #4
Brodyg, rand() выдаёт случайные числа от 0 до RAND_MAX. Остатком от деления числа, выданного функцией rand() на 6 могут быть числа от 0 до 5. Прибавляете 1, получаются числа от 1 до 6 - вот Вам и кубик...
1
Brodyg
0 / 0 / 0
Регистрация: 20.07.2010
Сообщений: 29
22.07.2010, 19:45  [ТС] #5
Я просто в восхищении от оперативности и точности ответов на этом форуме. В дальнейшем буду обращаться сюда со своими вопросами, что бы хоть изредка оставлять своих друзей программистов в покое ))) Спасибо!!!
0
odip
Эксперт С++
7158 / 3220 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
22.07.2010, 22:57 #6
Мог бы и сам догадаться - арифметику в первом классе проходят
0
Brodyg
0 / 0 / 0
Регистрация: 20.07.2010
Сообщений: 29
22.07.2010, 23:21  [ТС] #7
В первом классе давно не учился, да вообще можно сказать не учился в школе, а приходил садился за парту и летал в своем мире. Да меня это и не трогает, что было то было уже не вернуть. Не брезгую учить математику хоть из первого класса, хоть из садика.
Не оглядываюсь назад, смотрю и иду только в перед.
0
Humanoid
22.07.2010, 23:39
  #8

Не по теме:

Цитата Сообщение от odip Посмотреть сообщение
Мог бы и сам догадаться - арифметику в первом классе проходят
Кстати, я тоже долго думал, что означает mod, когда паскаль изучал Лень было и хелп читать и экспериментами заниматься (инета у меня в те времена не было ещё). Из-за этой лени я столько велосипедов изобрёл... даже обидно
Кстати, деление и остатки от деления проходят не в первом классе... уже не помню, но думаю, классе в четвёртом.

0
easybudda
Модератор
Эксперт CЭксперт С++
9677 / 5627 / 953
Регистрация: 25.07.2009
Сообщений: 10,800
22.07.2010, 23:52 #9
Ответ в принципе дали, закрою. Воспоминания о школе - это, конечно, хорошо, но...
0
22.07.2010, 23:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.07.2010, 23:52
Привет! Вот еще темы с ответами:

Генерация случайных чисел - C++
Здравствуйте! Мне нужно сгенерировать случайные числа, много и за секунду или быстрей. Можно ли использовать время компьютера с...

Генерация случайных чисел - C++
Здравствуйте, появилась такая проблема: при генерации случайного числа функцией rand(); мне нужно сгенерировать 5 случайных чисел, но...

Генерация случайных чисел - C++
Доброго времени суток ! Как генерировать случайное число например в диапазоне от 1 до 52 а потом исключить это число, и генерировать...

Генерация случайных чисел - C++
Вопрос такой: возможно ли при помощи функции random, устроить случайную генерацию одного из двух чисел? Например мне нужны числа 2 и 4.


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

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

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