मैंने संख्या सीमाएँ देखी हैं जैसे कि [first1,last1)
और [first2,last2)
।
मैं जानना चाहूंगा कि इस तरह के नोटेशन का क्या मतलब है।
मैंने संख्या सीमाएँ देखी हैं जैसे कि [first1,last1)
और [first2,last2)
।
मैं जानना चाहूंगा कि इस तरह के नोटेशन का क्या मतलब है।
जवाबों:
ब्रैकेट का मतलब है कि सीमा का अंत समावेशी है - इसमें सूचीबद्ध तत्व शामिल है। एक कोष्ठक का अर्थ है कि अंत अनन्य है और इसमें सूचीबद्ध तत्व शामिल नहीं है। तो [first1, last1)
, के लिए सीमा के साथ शुरू होता है first1
(और यह भी शामिल है), लेकिन पहले ही समाप्त होता है last1
।
पूर्णांक मानकर:
यह एक आधा खुला अंतराल है ।
[a,b]
में अंत बिंदु शामिल हैं।(a,b)
बाहर करता है।आपके मामले में अंतराल की शुरुआत में अंत बिंदु शामिल है, लेकिन अंत को बाहर रखा गया है। तो इसका मतलब है कि अंतराल "पहले 1 <= x <last1"।
आधा खुला अंतराल प्रोग्रामिंग में उपयोगी है क्योंकि वे लूपिंग के लिए सामान्य मुहावरे के अनुरूप हैं:
for (int i = 0; i < n; ++i) { ... }
यहाँ मैं सीमा में हूँ [0, n)।
गणित और कंप्यूटर विज्ञान दोनों में अंतराल अंकन की अवधारणा सामने आती है । गणितीय संकेतन , , , अर्थ है डोमेन (या सीमा एक अंतराल के)।[
]
(
)
कोष्ठक [
और ]
साधन:
लघुकोष्ठक (
और )
साधन:
मिश्रित राज्यों के साथ अंतराल को "आधा-खुला" कहा जाता है ।
उदाहरण के लिए, 1 (10 (समावेशी) से लगातार पूर्णांकों की सीमा को इस प्रकार सूचित किया जाएगा :
ध्यान दें कि शब्द inclusive
का उपयोग कैसे किया गया था। यदि हम अंतिम बिंदु को बाहर करना चाहते हैं , लेकिन उसी सीमा को "कवर" करते हैं, जिसे हमें अंत-बिंदु को स्थानांतरित करने की आवश्यकता है:
अंतराल के बाएँ और दाएँ दोनों किनारों के लिए वास्तव में 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
यह गणित और कंप्यूटर विज्ञान से कैसे संबंधित है?
ऐरे इंडेक्स एक अलग ऑफसेट का उपयोग करते हैं, जिसके आधार पर आप किस क्षेत्र में हैं:
इन अंतरों से सूक्ष्म बाड़ पोस्ट त्रुटियां , उर्फ, ऑफ-बाय-वन बग हो सकती हैं जब गणितीय एल्गोरिदम जैसे कि लूप्स को लागू करते हैं।
यदि हमारे पास एक सेट या सरणी है, तो पहले कुछ अपराधों के बारे में कहें [ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29 ]
, गणितज्ञ पहले तत्व को 1st
पूर्ण तत्व के रूप में संदर्भित करेंगे । इंडेक्स को निरूपित करने के लिए सबस्क्रिप्ट नोटेशन का उपयोग करना:
कुछ प्रोग्रामिंग भाषाएं, अंतर्विरोध में, zero'th
रिश्तेदार तत्व के रूप में पहले तत्व को संदर्भित करती हैं ।
चूंकि सरणी अनुक्रमित सीमा [0, N-1] में हैं, तो स्पष्टता प्रयोजनों के लिए सीमा 0 के लिए समान संख्यात्मक मान रखने के लिए "अच्छा" होगा क्योंकि पूर्वाग्रह जैसे पाठकीय शोर को जोड़ने के बजाय -1
।
उदाहरण के लिए, सी या जावास्क्रिप्ट में, एन तत्वों की एक सरणी पर पुनरावृति करने के लिए एक प्रोग्रामर i = 0, i < N
अंतराल के साथ सामान्य मुहावरे को लिखेगा [0, एन) के बजाय थोड़ा और अधिक क्रिया [0, एन -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-आधारित हैं प्रोग्रामिंग में आप एक की जरूरत हो सकती kludge एक गणितीय 1 आधारित एल्गोरिथ्म का उपयोग करने के एक डमी zero'th तत्व की। जैसे पायथन इंडेक्स स्टार्ट
सूक्ष्म बग से बचने के लिए फ्लोटिंग-पॉइंट नंबरों के लिए अंतराल अंकन भी महत्वपूर्ण है।
जब विशेष रूप से कंप्यूटर ग्राफिक्स (रंग रूपांतरण, कम्प्यूटेशनल ज्यामिति, एनीमेशन सहजता / सम्मिश्रण, आदि) में फ्लोटिंग-पॉइंट नंबरों के साथ काम करते हैं, तो अक्सर सामान्यीकृत संख्याओं का उपयोग किया जाता है। यानी 0.0 और 1.0 के बीच की संख्या।
यदि एंडपॉइंट समावेशी या अनन्य हैं, तो किनारे के मामलों को जानना महत्वपूर्ण है :
जहाँ M कुछ मशीन एप्सिलॉन है । यही कारण है कि आप कभी-कभी const float EPSILON = 1e-#
सी-कोड (जैसे 1e-6
) को 32-बिट फ्लोटिंग पॉइंट नंबर के लिए देख सकते हैं। यह SO प्रश्न EPSILON कुछ भी गारंटी देता है? कुछ प्रारंभिक विवरण हैं। अधिक व्यापक उत्तर के लिए देखें FLT_EPSILON
और डेविड गोल्डबर्ग की व्हाट एवरी कंप्यूटर साइंटिस्ट को फ्लोटिंग-पॉइंट अरिथमेटिक के बारे में पता होना चाहिए
एक यादृच्छिक संख्या जनरेटर के कुछ कार्यान्वयन, random()
रेंज में मान का उत्पादन कर सकते हैं 0.0 .. 0.999 ... अधिक सुविधाजनक 0.0 .. 1.0 के बजाय। कोड में उचित टिप्पणियां इसे [०.०,१.०) या [०.०,१.०] के रूप में प्रलेखित करेंगी ताकि उपयोग की कोई अस्पष्टता न हो।
उदाहरण:
random()
रंग उत्पन्न करना चाहते हैं। आप लाल, हरे और नीले चैनलों के साथ क्रमशः 24-बिट पिक्सेल उत्पन्न करने के लिए तीन फ़्लोटिंग-पॉइंट मानों को 8-बिट मानों में बदल देते हैं। random()
आपके द्वारा अंतराल उत्पादन के आधार पर near-white
(254,254,254) या white
(255,255,255) के साथ समाप्त हो सकता है । +--------+-----+
|random()|Byte |
|--------|-----|
|0.999...| 254 | <-- error introduced
|1.0 | 255 |
+--------+-----+
अंतराल के साथ फ्लोटिंग-पॉइंट परिशुद्धता और मजबूती के बारे में अधिक जानकारी के लिए, क्रिसिस्टर के रियल-टाइम कोलिजन डिटेक्शन , अध्याय 11 न्यूमेरिकल रोबस्टनेस , सेक्शन 11.3 रोबॉट फ्लोटिंग-पॉइंट उपयोग देखें ।
[first, last)
एक आधा खुला अंतराल है जैसा कि अन्य ने नोट किया है। कुछ पाठ्यपुस्तकों में, यह भी लिखा गया है[first, last>
और इसका बिल्कुल वही अर्थ है, केवल वाक्यविन्यास अलग है।