Я видел диапазоны номеров, представленные как [first1,last1)
и [first2,last2)
.
Хотелось бы знать, что означает такое обозначение.
mathematical-notation
навигационный
источник
источник
[first, last)
это полуоткрытый интервал, как отмечали другие. В некоторых учебниках это также пишется как[first, last>
и имеет точно такое же значение, только синтаксис отличается.Ответы:
Скобка означает, что конец диапазона является включающим - он включает указанный элемент. Скобка означает, что конец является исключающим и не содержит указанного элемента. Итак
[first1, last1)
, диапазон начинается сfirst1
(и включает его), но заканчивается непосредственно перед нимlast1
.Предполагая целые числа:
источник
Это полуоткрытый интервал .
[a,b]
включает конечные точки.(a,b)
исключает .В вашем случае конечная точка в начале интервала включена, но конец исключен. Это означает интервал «first1 <= x <last1».
Полуоткрытые интервалы полезны в программировании, потому что они соответствуют общепринятой идиоме зацикливания:
Здесь i находится в диапазоне [0, n).
источник
Понятие интервальной записи встречается как в математике, так и в информатике. Математические обозначения
[
,]
,(
,)
обозначают домен (или диапазон ) интервал.Скобки
[
и]
средства:Скобка
(
и)
означает:Интервал со смешанными состояниями называется «полуоткрытым». .
Например, диапазон последовательных целых чисел от 1 до 10 (включительно) будет обозначен как таковой:
Обратите внимание, как
inclusive
было использовано это слово . Если мы хотим исключить конечную точку, но «покрыть» тот же диапазон, нам нужно переместить конечную точку:И для левого, и для правого края интервала на самом деле есть 4 перестановки:
Как это связано с математикой и информатикой?
В индексах массивов обычно используется разное смещение в зависимости от того, в каком поле вы находитесь:
Эти различия могут привести к незначительным ошибкам столбов забора , иначе говоря, по одному. ошибок при реализации математических алгоритмов , таких как для-петли.
Целые
Если у нас есть набор или массив, скажем, из первых нескольких простых чисел
[ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29 ]
, математики будут называть первый элемент1st
абсолютным элементом. т.е. использование нижнего индекса для обозначения индекса:Некоторые языки программирования, в отличие от этого, будут называть первый элемент
zero'th
относительным элементом.Поскольку индексы массива находятся в диапазоне [0, N-1], то для ясности было бы "неплохо" сохранить такое же числовое значение для диапазона 0 .. N вместо добавления текстового шума, такого как
-1
смещение.Например, в C или JavaScript, чтобы перебирать массив из N элементов, программист должен написать обычную идиому
i = 0, i < N
с интервалом [0, N) вместо более подробного [0, N-1]:Математики, поскольку они начинают считать с 1, вместо этого использовали бы
i = 1, i <= N
номенклатуру, но теперь нам нужно исправить смещение массива на языке с нулевым отсчетом.например
Помимо :
В языках программирования, которые 0 основанных вам может понадобиться кладж манекен zero'th элемента для использования алгоритма математического 1 на основе. например, начало индекса Python
Плавающая точка
Нотация интервалов также важна для чисел с плавающей запятой, чтобы избежать мелких ошибок.
При работе с числами с плавающей запятой, особенно в компьютерной графике (преобразование цвета, вычислительная геометрия, замедление / смешение анимации и т. Д.), Часто используются нормализованные числа. То есть числа от 0,0 до 1,0.
Если конечные точки являются включающими или исключающими, важно знать крайние случаи :
Где M - это какой-то машинный эпсилон . Вот почему вы иногда можете увидеть
const float EPSILON = 1e-#
идиому в коде C (например,1e-6
) для 32-битного числа с плавающей запятой. Этот ТАК вопрос Гарантирует ли EPSILON что-нибудь? есть некоторые предварительные детали. Более подробный ответ см. ВFLT_EPSILON
книге Дэвида Голдберга. Что должен знать каждый компьютерный ученый об арифметике с плавающей точкой».Некоторые реализации генератора случайных чисел
random()
могут выдавать значения в диапазоне 0,0 .. 0,999 ... вместо более удобного 0,0 .. 1,0. Правильные комментарии в коде документируют это как [0.0,1.0) или [0.0,1.0], поэтому нет двусмысленности в использовании.Пример:
random()
цвета. Вы конвертируете три значения с плавающей запятой в беззнаковые 8-битные значения, чтобы сгенерировать 24-битный пиксель с красным, зеленым и синим каналами соответственно. В зависимости от выходного интервалаrandom()
вы можете получитьnear-white
(254,254,254) илиwhite
(255,255,255).Для получения дополнительных сведений о точности с плавающей запятой и устойчивости с интервалами см. « Обнаружение столкновений в реальном времени» Кристера Эриксона , глава 11 « Числовая устойчивость» , раздел 11.3 « Надежное использование с плавающей запятой» .
источник
Это может быть математическое соглашение при определении интервала, где квадратные скобки означают «экстремальный включающий», а круглые скобки «экстремальный исключающий».
источник