回答
括号表示范围的末尾是包括 - 它包括列出的元素。圆括号表示末尾是独占并且不包含列出的元素。因此,对于[first1, last1)
,范围从first1
开始(包括它),但在last1
之前结束。
假设整数:
- (0,5)= 1,2,3,4
- (0,5] = 1,2,3,4,5
- [0, 5)= 0,1,2,3,4
- [0,5] = 0,1,2,3,4,5
这是一个half-open interval。
- 闭区间
[a,b]
包括端点。 - 开放间隔
(a,b)
不包括他们。
在你的情况下,包括间隔开始的结束点,但结束被排除。所以它意味着间隔“first1 < = x < last1”。
for (int i = 0; i < n; ++i) { ... }
这里i是在范围[0,N):因为它们对应于共同成语用于循环
半开间隔在编程有用。
它可以是在一个区间的定义的数学惯例方括号表示“极端包括”和圆括号“极端排他”。
概念间隔符号出现在都数学和计算机科学。数学符号[
,]
,(
,)
表示区间的域(或范围)。
托架
[
和]
手段:- 数包括,
- 的间隔是关闭的这侧上,
的括号
(
和)
种手段:- 数为排除,
- 的间隔的此方开放。
的间隔与混合态被称为“半开”。
例如,连续整数的范围1 .. 10(含)。将谱写这样:
- [1,10]
通知如何字inclusive
被使用。如果我们想排除末点,但“捂”相同的范围内,我们需要移动的终点:
- [1,11)
对于左,右边缘间隔实际上有4个排列组合:
(1,10) = 2,3,4,5,6,7,8,9 Set has 8 elements
(1,10] = 2,3,4,5,6,7,8,9,10 Set has 9 elements
[1,10) = 1,2,3,4,5,6,7,8,9 Set has 9 elements
[1,10] = 1,2,3,4,5,6,7,8,9,10 Set has 10 elements
这与数学和计算机科学有什么关系?
数组索引倾向于使用不同取决于哪场抵消你在:
- 数学往往是一个为基础的。
- 某些编程语言往往是零-based,如C,C++,Javascript,Python,而其他语言如Mathematica,Fortran,Pascal是基于一个的。
这些差异可能导致一些围栏柱子错误,又名,实现数学算法,如for循环时off-by-one错误。
整数
如果我们有一组或数组,说的第几个质数[ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29 ]
的,数学家将参照第一元素作为1st
绝对元素。即,使用下标符号来表示指数:
- 一个 = 2
- 一个 = 3
- :
- 一个 = 29
一些编程语言相反,将第一个元素称为zero'th
相对元素。
- 一个[0] = 2
- 一个[1] = 3
- :
- 一个[9] = 29
由于阵列索引是在范围[0 ,N-1],那么为了清楚的目的,对于范围0 ... N保持相同的数值将是“很好的”,而不是增加文本噪音,例如-1
偏差。例如,在C或JavaScript中,为了遍历N个元素的数组,程序员将使用区间[0,N)编写i = 0, i < N
的常见惯用法,而不是略微更详细的[0,N-1] :
function main() {
var output = "";
var a = [ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29 ];
for(var i = 0; i < 10; i++) // [0,10)
output += "[" + i + "]: " + a[i] + "\n";
if (typeof window === 'undefined') // Node command line
console.log(output)
else
document.getElementById('output1').innerHTML = output;
}
<html>
<body onload="main();">
<pre id="output1"></pre>
</body>
</html>
数学家,因为他们从1开始计数,将改用i = 1, i <= N
命名,但现在我们需要纠正数组中从零开始的语言抵消。
例如
function main() {
var output = "";
var a = [ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29 ];
for(var i = 1; i <= 10; i++) // [1,10]
output += "[" + i + "]: " + a[i-1] + "\n";
if (typeof window === 'undefined') // Node command line
console.log(output)
else
document.getElementById("output2").innerHTML = output;
}
<html>
<body onload="main()";>
<pre id="output2"></pre>
</body>
</html>
除了:
在是基于0的,你可能需要一个虚拟的第零元素的杂牌使用基于1数学编程语言算法。例如Python Index Start
浮点
间隔符号也是浮点数重要的是避免微妙的错误。
特别是在计算机图形学(颜色转换,计算几何,动画缓和/混合等等)中处理浮点数时。)通常使用标准化数字。也就是说,数字在0.0到1.0之间。
- (0,1)= 1E-M .. ... 0.999
- (0:
知道边缘情况下,如果端点包括或独家是非常重要的,1] = 1E-M .. 1.0
- [0,1)= 0.0 .. 0.999 ...
- [0,1] = 0.0 .. 1.0
其中M是一些machine epsilon。这就是为什么您有时可能会在C代码(例如1e-6
)中看到const float EPSILON = 1e-#
成语的32位浮点数。这个SO问题Does EPSILON guarantee anything?有一些初步的细节。为了更全面的答案见FLT_EPSILON
和David Goldberg的What Every Computer Scientist Should Know About Floating-Point Arithmetic
一个随机数生成器的某些实现,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)结束。
+--------+-----+ |random()|Byte | |--------|-----| |0.999...| 254 | <-- error introduced |1.0 | 255 | +--------+-----+
有关浮点精度和稳定性与时间间隔的详细信息请参见克里斯特埃里克森的Real-Time Collision Detection,第11章数值鲁棒性 11.3节强大的浮点用法。
- 1. Java中的空花括号/大括号是什么意思?
- 2. 花括号后的括号是什么意思?
- 3. 闭包的括号是什么意思?
- 4. 双括号是什么意思?
- 5. 这个带方括号和插入符号的jQuery代码是什么意思?
- 6. Objective-C括号中的星号......这是什么意思?
- 7. jquery选择器之后的括号和括号是什么意思?
- 8. 这里的方括号是什么意思?
- 9. 这个接口定义中的尖括号是什么意思?
- 10. 空圆括号中的星号是什么意思?
- 11. 打开的括号后的逗号是什么意思?
- 12. 括号和大括号
- 13. 括号和括号在javascript
- 14. 查找方括号而不是括号
- 15. C++:指针,然后roound括号 - 这是什么意思?
- 16. 当变量位于括号外时,这是什么意思?
- 17. PHP - 方括号内的大括号是做什么的?
- 18. 有方括号的方括号或方括号内
- 19. Python中花括号和方括号有什么区别?
- 20. 大括号中的数字是什么“{0}”是什么意思?
- 21. 开括号和闭括号的含义是什么?
- 22. 什么是loc和iloc的类型? (括号内括号)
- 23. 意外括号
- 24. ASP.NET中的方括号是什么意思(C#)ex。会议(“”);?
- 25. 方括号内的C++运算符是什么意思?
- 26. 方括号是什么意思[]在财产?
- 27. Oracle SQL查询中的方括号是什么意思?
- 28. Groovy中变量名后的空方括号是什么意思?
- 29. Android gradle:版本的方括号是什么意思?
- 30. 类声明之前的方括号是什么意思?
`[first,last]`是其他人已经注意到的半开区间。在一些教科书中,这也被写为`[first,last>`并且具有完全相同的含义,只有语法不同。 – darioo 2010-12-09 08:49:39
这个问题的更好的地方是http://math.stackexchange.com/(恕我直言)。但是不要紧! :) – xk0der 2010-12-09 09:28:31