回答
括號表示範圍的末尾是包括 - 它包括列出的元素。圓括號表示末尾是獨佔並且不包含列出的元素。因此,對於[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