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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 35, средняя оценка - 4.69
Brodyg
 Аватар для Brodyg
0 / 0 / 0
Регистрация: 20.07.2010
Сообщений: 29
22.07.2010, 19:27     Генерация случайных чисел (rand () % 6) #1
Приветствую всех.
Изучаю "С" с нуля, дошел до генерации случайных чисел. С генерацией все ясно, не могу понять только зачем здесь взятие по модулю (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;
}
 Комментарий модератора 
Используйте соответствующие теги для оформления кода
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.07.2010, 19:27     Генерация случайных чисел (rand () % 6)
Посмотрите здесь:

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

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

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

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

Не по теме:

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

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.07.2010, 23:52     Генерация случайных чисел (rand () % 6)
Еще ссылки по теме:

C++ Генерация случайных чисел
C++ Rand(), генерирование случайных чисел в заданном интервале
Генератор случайных чисел (без rand) C++

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

Или воспользуйтесь поиском по форуму:
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
22.07.2010, 23:52     Генерация случайных чисел (rand () % 6) #9
Ответ в принципе дали, закрою. Воспоминания о школе - это, конечно, хорошо, но...
Yandex
Объявления
22.07.2010, 23:52     Генерация случайных чисел (rand () % 6)
Закрытая тема Создать тему
Опции темы

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