Как работает num = rand()%120?

Здесь принимаются все самые невообразимые вопросы... Главное - не стесняйтесь. Поверьте, у нас поначалу вопросы были еще глупее :)
Ответить
Открыл глаза
Сообщения: 41
Зарегистрирован: Ср май 22, 2013 22:25:34

Сообщение Nicolass44 »

Увидел описание функции рандомайза в кодевижне и там лимит задаётся через деление с отстатком:
num = rand()%120;
То есть тут результат функции rand ограничен числом 120.
Не могу понять как это работает...
Реклама
Друг Кота
Аватара пользователя
Сообщения: 16727
Зарегистрирован: Пт мар 30, 2012 05:17:29
Откуда: Екатеринбург

Сообщение mickbell »

Остаток от деления на 120 принципиально может быть только числом от 0 до 119. Вообще-то такое ограничение мне не нравится, потому как, скажем, если функция rand() выдаёт значения, скажем, от 0 до 999 (как на самом деле, я не знаю), то получается, что появление чисел от 0 до 39 несколько более вероятно, чем остальных. Так что я бы просто отсекал те значения, что не устраивают. Конечно, надо смотреть, что это и для чего.
И хрюкотали зелюки,
Как мюмзики в мове.

На каждый РКН
Найдётся VPN.
Реклама
Открыл глаза
Сообщения: 41
Зарегистрирован: Ср май 22, 2013 22:25:34

Сообщение Nicolass44 »

65535/120 = 546,125
Вот не понимаю я этого...
Друг Кота
Аватара пользователя
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Сообщение Ivanoff-iv »

% - это не деление, а остаток от деления
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Реклама
Эиком - электронные компоненты и радиодетали
Открыл глаза
Сообщения: 41
Зарегистрирован: Ср май 22, 2013 22:25:34

Сообщение Nicolass44 »

Ну так остаток 125, не? :dont_know:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Сообщение Ivanoff-iv »

65535/120 = 546,125 (деление)
остаток 0,125*120=15
т.е.: 65535/120 = 546 (это целочисленное деление)
65535%120 = 15 (остаток от целочисленного деления)
или так: 65535 = (546*120) + 15
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Реклама
Друг Кота
Аватара пользователя
Сообщения: 16727
Зарегистрирован: Пт мар 30, 2012 05:17:29
Откуда: Екатеринбург

Сообщение mickbell »

[uquote="Nicolass44",url="/forum/viewtopic.php?p=3343688#p3343688"]Ну так остаток 125, не? :dont_know:[/uquote]Кстати, не 125, а 0.125 на самом деле. Это никакой не остаток, а дробная часть результата деления. Блииин, в каком классе в курсе арихметики это нынче проходят? :shock:
И хрюкотали зелюки,
Как мюмзики в мове.

На каждый РКН
Найдётся VPN.
Ответить

Вернуться в «Теория»