रैंड ()% रेंज + कम का क्या अर्थ है? [बन्द है]

Dec 18 2020

Im C सीखना अभी और मुझे समझ में नहीं आ रहा है कि rand() % range + lowerकोड की इस लाइन का क्या मतलब है।

printf("I will generate 10 random numbers between %d and %d . . .\n", lower, upper);

int range = upper - lower+1;                        
for(int i = 0; i <= 10; i++) {                      
    int number = rand() % range + lower;            
    printf("%d\t", number);

जवाब

SergeBallesta Dec 18 2020 at 18:24

यह एक गरीब आदमी का रैखिक यादृच्छिक जनरेटर है।

यह वास्तव में यादृच्छिक है क्योंकि यह खिलाया जाता है rand()जिसमें से एक यादृच्छिक पूर्णांक देता है, और निर्माण के द्वारा मूल्य> = कम और <= ऊपरी होता है।

लेकिन यह अभी भी एक गरीब आदमी का उपकरण है क्योंकि [निचले, ऊपरी] अंतराल के मूल्यों में अलग-अलग संभावनाएं हो सकती हैं।

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

JhnW Dec 18 2020 at 18:32

कृपया abut% ऑपरेटर पढ़ें। यह मोडुलो डिवीजन है। मोडुलो डिवीजन यूनिफॉर्म मैपिंग सबसे बड़ी रेंज से लेकर सबसे छोटी रेंज (आपके मामले में रैंड ()% रेंज ) तक का अच्छा साधन है । आपको सही पदों को सही करने के लिए सभी मूल्यों को स्थानांतरित करने के लिए बस रेंज की शुरुआत की आवश्यकता है। कोड रैंड ()% रेंज + लोअर ए, बी रेंज से यादृच्छिक संख्या प्राप्त करने के लिए मानक सी मुहावरा है। आप और अधिक मुहावरे पा सकते हैं, उदाहरण के लिए (ए, बी) रेंज या <ए, बी> श्रेणी के साथ फ्लोटिंग-पॉइंट नंबर।