मान लीजिए कि हमारे पास एक फ़ंक्शन रैंड 7 है जो 1 से 7 की सीमा में एक समान यादृच्छिक पूर्णांक उत्पन्न करता है, हमें एक और फ़ंक्शन रैंड 10 लिखना होगा जो 1 से 10 की सीमा में एक समान यादृच्छिक पूर्णांक उत्पन्न करता है। हम यादृच्छिक संख्या उत्पन्न करने के लिए कुछ लाइब्रेरी फ़ंक्शन का उपयोग नहीं कर सकते हैं।
मान लीजिए कि हमें दो यादृच्छिक संख्याएँ चाहिए, तो वे [8,10] हो सकती हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- रैंड40 :=40
- रैंड 40>=40
- rand40 :=(rand7() - 1) * 7 + (rand7() - 1)
- वापसी रैंड40 मॉड 10 + 1
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
#include <bits/stdc++.h> using namespace std; int rand7(){ return 1 + rand() % 7; } class Solution { public: int rand10() { int rand40 = 40; while(rand40 >= 40){ rand40 = (rand7() - 1) * 7 + (rand7() - 1); } return rand40 % 10 + 1; } }; main(){ srand(time(NULL)); Solution ob; cout << (ob.rand10()) << endl; cout << (ob.rand10()) << endl; cout << (ob.rand10()) << endl; }
इनपुट
Call the function three times
आउटपुट
2 2 6