arc4random и оператор %

У меня есть вопрос о функции arc4random() в Objective-C.

В примерах, которые я видел в Интернете, есть символ % сразу после вызова функции. Я думаю о % как об операторе модуля, поэтому имеет ли этот символ другое значение при использовании после arc4random()? Как это работает?


person Tony    schedule 22.01.2012    source источник
comment
Вы действительно должны прочитать книгу по Objective-C. % — это обычный целочисленный арифметический оператор, подробно описанный в любой приличной книге.   -  person Paul R    schedule 22.01.2012
comment
Это простой C, который, вероятно, является лучшим местом для поиска такого рода ссылок, поскольку ссылки на Objective-C, как правило, сосредоточены на том, что Objective-C делает сверх C.   -  person Abizern    schedule 22.01.2012
comment
К чему здесь вопрос? Вы говорите, что знаете, что это оператор модуля; если вы это знаете, то вы знаете, как это работает. Вы пробовали это и видели, что происходит что-то странное? Если вы видите этот паттерн во всех примерах, то какие у вас есть основания даже подозревать, что это какое-то специальное использование?   -  person jscs    schedule 22.01.2012
comment
Я уже какое-то время занимаюсь JavaScript, там вы используете функцию rand() для генерации случайного числа от 0 до 1. Тогда, возможно, Тони подумал, что arc4random работает таким же образом, и увидеть, как оператор модуля действует на десятичное значение, запутанно (а может и ерунда). Конечно, это не относится к arc4random, который генерирует целое число.   -  person MrAn3    schedule 04.05.2014
comment
Мы должны стать лучшим сообществом. Первоначальная формулировка этого вопроса была катастрофой. Очевидно, что это не носитель английского языка, и с репутацией 21 он здесь новичок. Мы должны приветствовать его, зафиксировав его вопрос. Все, что потребовалось, это немного грамматики и несколько обратных кавычек, и это выглядит как любой другой SOQ. Помните, вы тоже когда-то были новичком. Я снова открываю этот вопрос. Спасибо @ksol за отличный ответ.   -  person Bruno Bronosky    schedule 06.01.2016


Ответы (1)


Никакого особого смысла. Применение модуля после arc4random() (или любой другой случайной функции) является распространенным шаблоном для ограничения минимального/максимального значения случайного числа. Например, arc4random() % 78 вернет вам число от 0 до 77.

person ksol    schedule 22.01.2012
comment
0..77, в том числе 77; это лучший способ сказать вещи здесь - person pnizzle; 11.04.2014
comment
@pnizzle [0, 77] — это то, как вы пишете 0≤x≤77, а (0, 77) — это то, как вы пишете 0‹x‹77 - person Albert Renshaw; 01.09.2014
comment
Правые скобки обозначают диапазон, включающий x. Скобки обозначают диапазон до x - person Albert Renshaw; 01.09.2014
comment
@AlbertRenshaw Я просто пытался сказать, что 0≤x≤77 означает до 77 включительно; лучше, чем до 77 и исключая 78, как упомянул Кристиан. Его комментарий правильный, но лучше сказать, что он включает 78. - person pnizzle; 01.09.2014
comment
@AlbertRenshaw спасибо за информацию о скобках, я не знал об этом. - person pnizzle; 01.09.2014
comment
@pnizzle Нет проблем :D - person Albert Renshaw; 01.09.2014
comment
Просто для хорошего ведения записей вот более надежный источник и более подробный отчет об обозначении открытых и закрытых интервалов: en.wikipedia.org/wiki/ - person Albert Renshaw; 01.09.2014
comment
Спасибо @ksol за подробную информацию о том, что диапазон меньше, чем правый операнд модуля. Это то, что люди будут искать здесь. Это первое объяснение, которое я видел, которое проясняет этот момент. И это важно, потому что вы не можете просто запустить код и посмотреть, что получится в результате... он случайный! - person Bruno Bronosky; 06.01.2016