कार्यपत्रक पर किसी भी ऑपरेशन के लिए Excel RANDBETWEEN नंबर क्यों बदलते हैं?


14

मुझे Microsoft Excel के RANDBETWEEN फ़ंक्शन का उपयोग करने की आवश्यकता है, और मुझे पता है कि यादृच्छिक संख्याओं का एक नया सेट किसी भी समय आप वर्कशीट पर कहीं भी और कुछ भी करने से उत्पन्न होता है। मुझे वर्कअराउंड के बारे में भी पता है कि यादृच्छिक संख्याओं का एक सेट "फ्रीज" किया जाता है, जो कि बी और बी के बीच यादृच्छिक संख्याओं की एन सूचियों को छांटने के लिए उत्पन्न होता है। मेरा सवाल यह है: क्यों यादृच्छिक संख्या उत्पन्न परिवर्तन करते हैं? क्या एल्गोरिथ्म में ऐसा कुछ है जो इसकी आवश्यकता है? FWIW, Google Sheets, LibreOffice Calc, Apple नंबर सभी समान व्यवहार प्रदर्शित करते हैं।


"क्यों ..." के साथ प्रश्न यहाँ अक्सर विषय बंद होते हैं क्योंकि शायद केवल लेखक ही निश्चित उत्तर दे सकता है। आपके प्रश्न में वांछित कार्यक्षमता नहीं है, इसलिए आपको कुछ भी सुझाना मुश्किल है।
मेत्से जुहेज़

2
@ MátéJuhász ऐसा लगता है कि दिए गए जवाबों से पता चलता है कि यह मुश्किल नहीं है ...
सोलर माइक

उत्तर नहीं, लेकिन यहाँ उन लोगों के लिए कुछ वर्कअराउंड हैं जिन्हें एक की आवश्यकता है: stackoverflow.com/questions/8011032/…
एडम

जवाबों:


28

चार्ल्स विलियम्स की एक अच्छी व्याख्या है कि एक्सेल कैसे चीजों की गणना करता है और क्यों।

http://www.decisionmodels.com/calcsecretsi.htm

संक्षेप में, यदि किसी कार्यपुस्तिका में अस्थिर कार्य होते हैं (चार्ल्स की सूची देखें, क्योंकि विभिन्न एक्सेल संस्करणों के साथ वर्षों में एक अस्थिर कार्य बदल गया है), तो कार्यपुस्तिका के किसी भी सेल को बदलने पर एक संपूर्ण कार्यपुस्तिका पुनर्गणना शुरू हो जाएगी (यदि एक्सेल स्वचालित गणना पर सेट है)। यदि कार्यपुस्तिका में कोई अस्थिर कार्य नहीं हैं, तो केवल अंतिम परिवर्तन से प्रभावित होने वाली कोशिकाएँ पुनर्गणना करेंगी।

यहां अन्य लोगों ने कहा है कि किसी भी सेल को बदलने पर स्वचालित गणना हमेशा कार्यपुस्तिका में सब कुछ की गणना करेगी, लेकिन यह गलत है। केवल अस्थिर कार्य कार्यपुस्तिका में सभी कक्षों के स्वत: पुनर्गणना का कारण बनते हैं। अस्थिर कार्यों के बिना, एक्सेल केवल उसी चीज़ को पुनर्गणना करता है जिसे पुनर्गणना करने की आवश्यकता होती है।

यही कारण है कि मेरे जैसे लोग, जो अंतर को जानते हैं, यदि संभव हो तो, वर्कशीट कोशिकाओं में OFFSET () या INDIRECT () जैसे अस्थिर कार्यों से बचने के लिए दृढ़ता से सलाह देते हैं, क्योंकि मट्ठा, कार्यपुस्तिका को धीमा कर देगा, ताकि हर बार के परिवर्तन के बाद पूर्ण पुनर्गणना हो। OFFSET () के बजाय INDEX () का उपयोग करना सीखने से नाटकीय गति में सुधार हो सकता है, क्योंकि सूचकांक अस्थिर नहीं है (अधिक विवरण के लिए चार्ल्स का लेख देखें)।

एक्सेल का गणना इंजन "रिकाल या डाई" दर्शन पर आधारित है जो एक्सेल को प्रतिस्पर्धी उत्पादों से अलग करता है जब यह विकास में था। इस लेख को देखें: https://www.geekwire.com/2015/recalc-or-die-30-years-later-microsoft-excel-1-0-vets-recount-a-project-that-defied-the -odds /


3
बेशक, अगर "वाष्पशील कार्य" को सही ढंग से परिभाषित किया गया है, तो गति के अलावा, सब कुछ पुनर्गणना करने और केवल आवश्यक होने पर पुनर्गणना के बीच कोई अंतर नहीं होना चाहिए।
hobbs

12

अन्य उत्तर पुनर्गणना के यांत्रिकी और वाष्पशील कार्यों की भूमिका पर ध्यान केंद्रित करते हैं, लेकिन मुझे लगता है कि प्रश्न के सार का हिस्सा याद आता है। यह उन नियमों को संबोधित करता है जो नियोजित किए गए हैं लेकिन इतना "क्यों" नहीं। मैं उस पर ध्यान केंद्रित करूंगा।

रचना विचार

मुझे एक डिजाइन अवधारणा और अधिकांश आधुनिक स्प्रैडशीट के भवन ब्लॉकों से शुरू करना चाहिए। "जिम्मेदारी का विभाजन" है। फ़ंक्शंस समर्पित दिनचर्या हैं जो एक विशिष्ट कार्य करते हैं, और हर बार जब उनसे पूछा जाता है, तो इसे करें। उनसे अलग, स्प्रेडशीट एप्लिकेशन नियंत्रित करता है जब वे पूछते हैं।

कार्य, स्वयं, पुनर्गणना या पुनर्गणना का चयन करने के लिए कोई तर्क नहीं रखते हैं। जब भी ऐसा करने के लिए ट्रिगर किया जाता है तब सभी एक्सेल फ़ंक्शन की प्रकृति कुछ प्रकार के ऑपरेशन करने के लिए होती है। किसी भी फ़ंक्शन की अपनी वर्तमान मूल्य की अपनी "मेमोरी" या इसके पिछले गणना का इतिहास नहीं है। यह जानने का कोई तरीका नहीं है कि यह पहली बार है जब इसे अपना काम करने के लिए कहा जा रहा है। इसलिए किसी भी देशी कार्य को केवल एक बार चलाने की क्षमता नहीं है। यदि किसी फ़ंक्शन को पुनर्गणना किया जाता है, तो वह वही करेगा जो वह करने के लिए डिज़ाइन किया गया है और एक नए मूल्य का उत्पादन करता है।

स्प्रेडशीट एप्लिकेशन में कुछ बुद्धिमत्ता होती है जो इसे अनावश्यक पुनरावृत्ति को छोड़ कर समय बचाने की सुविधा देती है (जैसा कि टायलिन के उत्तर में वर्णित है)। केवल समय पुनर्गणना को छोड़ दिया है आवेदन जानता है कि समारोह के मूल्य स्प्रेडशीट परिवर्तन है कि पुनर्गणना चीजों की जरूरत शुरू हो रहा से प्रभावित नहीं किया गया है।

तो क्या होगा अगर आपको एक बार एक फ़ंक्शन चलाने और उसके मूल्य को संरक्षित करने की आवश्यकता है? एक यादृच्छिक संख्या के उत्पादन का अपना उदाहरण लें और फिर परिणाम न बदलें। यह बेतरतीब ढंग से उत्पन्न स्थिरांक बनाने का वर्णन करता है, और आप एक्सेल के साथ ऐसा कर सकते हैं।

एक्सेल नहीं जान सकता कि आप उसकी क्षमताओं का उपयोग कैसे करना चाहते हैं; आप नए मूल्यों का उत्पादन जारी रखना चाहते हैं या अंतिम सेट को संरक्षित करना चाहते हैं। प्रत्येक विकल्प एक उपयोग मामला है जिसे एक्सेल समर्थन करता है। Excel आपको नए मानों की गणना करने के लिए उपकरण और पुराने मानों को संरक्षित करने के लिए उपकरण देकर दोनों मामलों को समायोजित करता है। आप जो चाहें बना सकते हैं। लेकिन उपयोगकर्ता की ज़िम्मेदारी है कि वह वही करे जो वह चाहता है।

फंक्शन लॉजिक

तो फ़ंक्शन क्या करता है इसके लिए तर्क को देखने दें। यह एक यादृच्छिक समारोह को छोड़ने के लिए पुनर्गणना तर्क के लिए समझ में आ सकता है क्योंकि स्प्रेडशीट में अन्य परिवर्तनों से इसका मूल्य प्रभावित नहीं होना चाहिए?

पुनर्गणना पर किसी फ़ंक्शन का मान बदलता है या नहीं, यह उसके उद्देश्य पर निर्भर करता है और यह किस पर आधारित है। निरंतर मूल्यों पर एक गणना हमेशा एक ही परिणाम उत्पन्न करेगी। सेल मानों पर आधारित एक ऑपरेशन जो नहीं बदला है, उसी परिणाम का उत्पादन करेगा।

हालांकि, कुछ फ़ंक्शन हर बार एक अलग परिणाम बनाने के इरादे और उद्देश्य के साथ डिज़ाइन किए जाते हैं। उदाहरण के लिए, मौजूदा समय के आधार पर किए गए कार्यों पर विचार करें। वे पुनर्गणना के समय के आधार पर एक नया परिणाम तैयार करेंगे। आपके पास एक फ़ंक्शन नहीं हो सकता जिसका उद्देश्य वर्तमान समय के आधार पर एक मूल्य का उत्पादन करना है और पुनर्गणना होने पर इसे अपडेट नहीं करना है।

पुनर्गणना नियंत्रण उद्देश्य हमेशा सब कुछ चीजों की वर्तमान स्थिति को दर्शाता है जब पुनर्गणना शुरू हो जाती है। यदि मौजूदा समय के आधार पर फ़ंक्शन अपडेट नहीं किए गए थे, तो यह मानदंड पूरा नहीं होगा।

RANDBETWEEN की तरह "यादृच्छिक" फ़ंक्शन का उद्देश्य पुनर्गणना होने पर एक नया यादृच्छिक संख्या बनाने का उद्देश्य है। यही उनका इरादा है। आप तर्क दे सकते हैं कि पुनर्गणना को छोड़ दिया जा सकता है क्योंकि मूल्य स्प्रेडशीट पर होने वाली अन्य चीजों से प्रभावित नहीं होना चाहिए।

यदि वह डिफ़ॉल्ट व्यवहार था, तो आप स्प्रेडशीट को अपडेट कर रहे होंगे, लेकिन यादृच्छिक मान स्थिर रहेगा। यह बहुत यादृच्छिक व्यवहार नहीं है। यह एक उपयोग मामले का समर्थन करेगा लेकिन दूसरे का नहीं। मूल डिजाइन अवधारणा पर वापस जाते हुए, इसे किसी अन्य फ़ंक्शन की तरह संभाला जाता है। डिफ़ॉल्ट व्यवहार के लिए एक्सेल पुनर्गणना है। यदि आप अपने उपयोग के मामले के लिए पिछले मूल्य को संरक्षित करना चाहते हैं, तो यह आपके लिए उपलब्ध उपकरणों के साथ करना है।


मेरे द्वारा दिए गए उत्तर के करीब ले जाते हुए, यह ठीक व्याख्या, अभी भी मुझे असंबद्ध छोड़ देती है। मैं 1 और 365 के बीच 25 यादृच्छिक संख्याएँ उत्पन्न करने की कोशिश कर रहा हूँ; मुझे यह ट्वेंटी टाइम करने की ज़रूरत है (हाँ, यह "क्लासिक" जन्मदिन की समस्या का एक अनुकरण है)। एक बार जब मैं 25 यादृच्छिक संख्याओं का एक सेट उत्पन्न करता हूं, तो मैं उन्हें (1) फ्रीज करना चाहूंगा, जबकि मैं 25 के अन्य सेट उत्पन्न करता हूं, और (2) इसलिए मैं उन 20 सेटों को सॉर्ट कर सकता हूं जिन्हें मैंने अभी उत्पन्न किया था। मैं यह दूसरों के द्वारा सुझाए गए वर्कअराउंड का उपयोग करके कर सकता हूं, लेकिन प्राथमिक आंकड़ों का अध्ययन करने वाले कई छात्रों को प्राप्त करने के लिए यह एक बहुत बड़ा काम है।
Nowradioguy

3
@nowradioguy, वह कौन सा हिस्सा है जिसके बारे में आप अनभिज्ञ हैं? एक्सेल एक निश्चित तरीके से काम करता है और हम इसकी क्षमताओं और डिजाइन के साथ फंस गए हैं। आपकी आवश्यकता के लिए, परिणामों को संरक्षित करना बहुत सरल है, बस इसे कई बार करने की आवश्यकता है। यदि संख्याएं एक कॉलम में हैं, तो 25 का सेट एक ही चरण में चुनें और कॉपी करें, फिर किसी अन्य स्थान पर सेल में विशेष मान पेस्ट करें। यह केवल कुछ क्लिक हैं, शायद इसे करने का सबसे तेज़ तरीका। पेस्ट शायद एक पुनर्गणना को ट्रिगर करेगा, इसलिए आप दोहराने के लिए तैयार हैं। आप एक दो मिनट में 20 सेट कर सकते हैं। फिर इसके साथ मज़े करो। :-)
फिक्सर 1234

2

वर्कशीट में हर परिवर्तन सभी फॉर्मूलों का स्वचालित पुनर्गणना करता है, जो कि डिफ़ॉल्ट व्यवहार है।

आप इसे निष्क्रिय कर सकते हैं या इसे वास्तविक मान को शुद्ध मान में परिवर्तित कर सकते हैं (एक सूत्र के विपरीत)।


1
मैं समझता हूं कि, लेकिन क्या आप जानते हैं कि ऐसा क्यों होगा? इस बारे में कुछ भी स्पष्ट नहीं है कि किसी विशेष सेल में उत्पन्न एक यादृच्छिक संख्या उस कार्यपत्रक पर कहीं और किए गए ऑपरेशन से प्रभावित क्यों होगी।
Nowradioguy

3
यदि आप "जीवन के लिए एक यादृच्छिक मूल्य" चाहते हैं या यदि आप इसे बार-बार बदलना चाहते हैं, तो एक्सेल को पहले से कैसे पता चलेगा? दूसरा मामला अधिक संभवतया एक है (जैसा कि विपरीत स्थिति में आप सीधे सेल में यादृच्छिक मान टाइप कर सकते हैं)।
4

आपका कथन गलत है। स्वचालित पुनर्गणना सभी फ़ार्मुलों के पुनर्गणना का कारण नहीं बनती है। केवल जब कार्यपुस्तिका में अस्थिर कार्य होते हैं।
तेय्यल

1

इसे "वाष्पशील" सूत्र के रूप में वर्गीकृत किया गया है और जब परिवर्तन का पता लगाया जाता है या किसी नए कार्य में प्रवेश किया जाता है, तो ऐसे कार्यों की सूची का भाग होता है।

विचार करने के लिए एक अन्य विकल्प शीट को मैन्युअल गणना पर स्विच करना है ताकि आप ऐसा होने पर नियंत्रित करें - बस यह सुनिश्चित करें कि आप पुनर्गणना को याद रखें, हालांकि मूल्यों या सूत्रों में कोई भी परिवर्तन पुनर्गणना का कारण नहीं होगा ...


मैंने Googling "अस्थिर फॉर्मूला" की कोशिश की है, और कई लिंक सामने आए हैं, जो बता रहे हैं कि "अस्थिर" फॉर्मूले की सूची में क्या है, लेकिन कहीं भी मुझे एक विवरण नहीं मिल सकता है जैसा कि क्यों है? ।
Nowradioguy

1
एक मान लेगा क्योंकि यह "यादृच्छिक" है, इसलिए यह तर्कसंगत है कि यह हर बार पुनर्गणना करेगा ... जैसा कि बताया गया है कि यदि आप अपना यादृच्छिक संख्या तय करना चाहते हैं तो आपके पास 2 अलग-अलग तरीके हैं - जिसका अर्थ है कि यह अब नहीं बदलेगा। यहाँ कुछ अच्छी जानकारी: decisionmodels.com/calcsecretsi.htm
सोलर माइक

हाँ धन्यवाद; यह मेरे Google खोज में आने वाले परिणामों में से एक था, लेकिन यह सीधे मेरे प्रश्न को संबोधित नहीं करता है। इसके बारे में सोचें: अगर मैं किसी अन्य सेल में एक असंबंधित ऑपरेशन कर रहा हूं, और एक गणना लागू होती है, तो पहले से उत्पन्न किसी भी यादृच्छिक संख्या को नए सिरे से बनाया जाता है और बदल दिया जाता है। मेरे लिए थोड़ा समझ में आता है।
Nowradioguy

जब Excel उस प्रक्रिया को चलाता है, जब कोई ईवेंट उस प्रक्रिया को ट्रिगर करता है, तो रैंडबेटीन को वाष्पशील के रूप में वर्गीकृत किया जाता है (मैंने अपनी बेटी के लिए एक पासा शीट बनाई थी ताकि वह हर बार मुझे F9 से हिट करे ...) तो यह पुनर्गणना हो जाती है, यहां भी देखें: beatexcel.com/ वाष्पशील-कार्य-एक्सेल । यदि आप पहले से यादृच्छिक संख्या को बदलना चाहते हैं तो उसे प्राप्त करने के दो तरीके हैं।
सौर माइक

@ fixer1234 हर कोई अस्थिर नहीं है। स्प्रेडशीट में कुछ भी बदलने पर हर फॉर्मूले का पुनर्मूल्यांकन नहीं किया जाता है। यह तभी होता है जब कार्यपुस्तिका में अस्थिर सूत्र होते हैं। यदि आपके पास केवल Sum () या Countif () या कुछ ऐसे हैं, तो यह केवल एक परिवर्तन से प्रभावित कोशिकाओं को पुनर्गणना करेगा, न कि कार्यपुस्तिका को।
तेयलिन

0

इस ध्वनि को एक फीचर और बग की तरह बनाने के वीर प्रयासों के बावजूद, मुझे यह बहुत कम संभावना है कि यह व्यवहार नियमित रूप से लाभप्रद है। "सुविधाएँ" हमारे जीवन को आसान बनाती हैं, "कीड़े" इसे कठिन बनाते हैं। मेरे मामले में, किसी सेल में एक लेबल या स्पष्टीकरण दर्ज करना जो किसी अन्य सेल द्वारा संदर्भित नहीं है, फिर से यादृच्छिकरण का कारण बनता है जो इससे निपटने के लिए असुविधाजनक है। मुझे लगता है कि एक "बग" कहते हैं।

हां, मैं मैन्युअल रूप से पुनर्गणना (एक दर्द) को नियंत्रित कर सकता हूं या इसे (फिर से, एक दर्द) को रोकने के लिए मूल्यों को पेस्ट कर सकता हूं, लेकिन क्या उन मामलों में शीट के दूरस्थ क्षेत्र में पाठ के प्रवेश के कारण पुन: यादृच्छिकता जीवन को आसान बनाती है?

यहां तक ​​कि अगर "वाष्पशील" कार्यों की हैंडलिंग के पीछे कुछ तर्क हैं, तो यह असंबंधित और अप्रतिबंधित कोशिकाओं में पाठ प्रविष्टि के बाद, या "असंबद्ध संपादन" द्वारा पाठ प्रविष्टि के बाद "दर्ज" करने के अलावा उचित मानदंड के माध्यम से पुनर्गणना को आसान प्रतीत होगा। यह रोकना कि डिफ़ॉल्ट होना चाहिए और मैं कल्पना नहीं कर सकता कि इसे लागू करना मुश्किल होगा। अगर कोई चाहता है कि "सुविधा" तो वे इसे चालू कर सकते हैं, लेकिन मैं कल्पना नहीं कर सकता कि यह कब एक अच्छी बात होगी। सबसे अच्छा, यह अपेक्षाकृत हानिरहित हो सकता है। मेरे लिए, मेरे द्वारा बनाई जा रही शीट के प्रकार के कारण यह एक बड़ी परेशानी है।

अंत में - विश्लेषण टूलपैक आपको विभिन्न तरीकों से यादृच्छिक संख्याओं के वितरण का निर्माण करने की अनुमति देता है, और इसलिए बनाई गई संख्याओं की श्रेणियाँ बिल्कुल भी पुनर्गणना नहीं करती हैं (जब तक कि आप ऐसा करने के लिए नहीं कहते हैं। इसलिए मैं सलाह देता हूं कि लोग अपनी जरूरतों को पूरा करने के लिए एनालिसिस टूलपैक का इस्तेमाल करें।


सुपर उपयोगकर्ता में आपका स्वागत है। साइट समाधानों का एक ज्ञान आधार है, इसलिए उत्तर पोस्ट को प्रश्न में पूछे गए उत्तरों पर ध्यान देने की आवश्यकता है। लगभग आपकी पूरी पोस्ट वास्तव में एक शेख़ी, राय और कमेंट्री है, जो डाउनवोट को आकर्षित करने की संभावना है क्योंकि यह साइट के ढांचे के भीतर गैर-उत्पादक है। आपका अंतिम पैराग्राफ आशाजनक हो सकता है। बाकी सब को हटाने पर विचार करें, और "कैसे", शायद एक उदाहरण को शामिल करने के लिए अंतिम पैराग्राफ का विस्तार करें। एक्सेल न्यूबॉकों के लिए, यह भी उल्लेख करना उपयोगी होगा कि उस टूलपैक को कैसे लोड किया जाए।
फिक्सर 1234 20
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.