Страница 1 из 1

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

Добавлено: Пт мар 30, 2018 18:17:49
Nicolass44
Увидел описание функции рандомайза в кодевижне и там лимит задаётся через деление с отстатком:
num = rand()%120;
То есть тут результат функции rand ограничен числом 120.
Не могу понять как это работает...

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

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

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

Добавлено: Сб мар 31, 2018 16:49:09
Nicolass44
65535/120 = 546,125
Вот не понимаю я этого...

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

Добавлено: Сб мар 31, 2018 17:07:34
Ivanoff-iv
% - это не деление, а остаток от деления

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

Добавлено: Сб мар 31, 2018 19:36:07
Nicolass44
Ну так остаток 125, не? :dont_know:

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

Добавлено: Сб мар 31, 2018 20:00:10
Ivanoff-iv
65535/120 = 546,125 (деление)
остаток 0,125*120=15
т.е.: 65535/120 = 546 (это целочисленное деление)
65535%120 = 15 (остаток от целочисленного деления)
или так: 65535 = (546*120) + 15

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

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