ऐसा करने का सबसे अच्छा तरीका एक यादृच्छिक संख्या उत्पन्न करना है जो संख्याओं के एक निश्चित समूह में समान रूप से वितरित किया जाता है, और फिर 0 और 100 के बीच सेट पर एक प्रक्षेपण फ़ंक्शन लागू करें जहां आप चाहते हैं कि संख्याओं को हिट करने के लिए प्रक्षेपण की अधिक संभावना है।
आमतौर पर इसे प्राप्त करने का गणितीय तरीका आपके द्वारा वांछित संख्याओं की प्रायिकता फ़ंक्शन को प्लॉट कर रहा है। हम घंटी की वक्र का उपयोग कर सकते हैं, लेकिन चलो आसान गणना के लिए बस एक फ़्लिप किए गए पेराबोला के साथ काम करते हैं।
आइए एक परवल को इस तरह बनाएं कि इसकी जड़ें 0 और 100 पर बिना तिरछी लगे रहें। हमें निम्नलिखित समीकरण मिलते हैं:
f(x) = -(x-0)(x-100) = -x * (x-100) = -x^2 + 100x
अब, 0 और 100 के बीच के वक्र के नीचे का सारा क्षेत्र हमारे पहले सेट का प्रतिनिधि है जहाँ हम उत्पन्न संख्याएँ चाहते हैं। वहां, पीढ़ी पूरी तरह से यादृच्छिक है। इसलिए, हमें केवल अपने पहले सेट की सीमा का पता लगाने की जरूरत है।
निचला बाउंड, निश्चित रूप से, 0. ऊपरी बाउंड 100 पर हमारे फ़ंक्शन का अभिन्न अंग है, जो है
F(x) = -x^3/3 + 50x^2
F(100) = 500,000/3 = 166,666.66666 (let's just use 166,666, because rounding up would make the target out of bounds)
इसलिए हम जानते हैं कि हमें 0 और 166,666 के बीच कहीं एक संख्या उत्पन्न करने की आवश्यकता है। फिर, हमें बस उस नंबर को लेने की जरूरत है और इसे हमारे दूसरे सेट पर प्रोजेक्ट करना है, जो कि 0 और 100 के बीच है।
हम जानते हैं कि हमने जो रैंडम नंबर जनरेट किया है, वह 0 और 100 के बीच इनपुट x के साथ हमारे पेराबोला का कुछ अभिन्न अंग है। इसका मतलब है कि हमें बस यह मान लेना है कि रैंडम नंबर F (x) का परिणाम है, और x के लिए हल करें।
इस मामले में, एफ (एक्स) एक घन समीकरण है, और फॉर्म में F(x) = ax^3 + bx^2 + cx + d = 0
, निम्नलिखित कथन सत्य हैं:
a = -1/3
b = 50
c = 0
d = -1 * (your random number)
X पैदावार के लिए इसे हल करने से आपको वास्तविक रैंडम नंबर की तलाश होती है, जिसकी गारंटी [0, 100] रेंज में होती है और किनारों की तुलना में केंद्र के करीब होने की बहुत अधिक संभावना होती है।