"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > बिना बूस्ट के C/C++ में सामान्य रूप से वितरित यादृच्छिक संख्याएँ कैसे उत्पन्न करें?

बिना बूस्ट के C/C++ में सामान्य रूप से वितरित यादृच्छिक संख्याएँ कैसे उत्पन्न करें?

2024-11-23 को प्रकाशित
ब्राउज़ करें:696

How to Generate Normally Distributed Random Numbers in C/C   Without Boost?

सी/सी में सामान्य वितरण के साथ यादृच्छिक संख्याएं उत्पन्न करना

प्रश्न:

मैं आसानी से यादृच्छिक संख्याएं कैसे उत्पन्न कर सकता हूं बूस्ट का उपयोग किए बिना सी या सी में सामान्य वितरण का पालन करना पुस्तकालय?

उत्तर:

बॉक्स-मुलर ट्रांसफॉर्म

बॉक्स-मुलर ट्रांसफॉर्म जेनरेट करने के लिए व्यापक रूप से उपयोग की जाने वाली विधि है एक समान यादृच्छिक संख्या जनरेटर से सामान्य रूप से वितरित संख्याएँ। यह ऐसे मान उत्पन्न करता है जो गाऊसी वितरण का सटीक रूप से पालन करते हैं। (2 * π * U2) y = sqrt(-2 * log(U1)) * syn(2 * π * U2)

जहां:

x = sqrt(-2 * log(U1)) * cos(2 * π * U2)
y = sqrt(-2 * log(U1)) * sin(2 * π * U2)
U1 और U2 समान रूप से 0 और 1 के बीच यादृच्छिक संख्याएं वितरित की जाती हैं

x और y को आम तौर पर माध्य 0 और मानक विचलन के साथ यादृच्छिक संख्याएं वितरित की जाती हैं 1
  • कार्यान्वयन:

सी/सी में बॉक्स-मुलर परिवर्तन को लागू करने के लिए, आप निम्नलिखित कोड का उपयोग कर सकते हैं:# शामिल करें #शामिल डबल बॉक्स_मुलर() { std::random_device rd; // सिस्टम क्लॉक सीड के साथ यादृच्छिक संख्या जनरेटर को देखें std::default_random_engine rng(rd()); std::uniform_real_distribution dist(0.0, 1.0); डबल U1 = dist(rng); डबल U2 = dist(rng); डबल x = sqrt(-2 * लॉग(U1)) * cos(2 * M_PI * U2); वापसी एक्स; }

उपयोग:
x = sqrt(-2 * log(U1)) * cos(2 * π * U2)
y = sqrt(-2 * log(U1)) * sin(2 * π * U2)

सामान्य रूप से वितरित यादृच्छिक संख्या उत्पन्न करने के लिए, बस बॉक्स_मुलर() फ़ंक्शन को कॉल करें:डबल रैंडम_नंबर = बॉक्स_मुलर();

random_number का मान माध्य 0 और मानक विचलन के साथ एक गाऊसी-वितरित यादृच्छिक चर होगा 1.

x = sqrt(-2 * log(U1)) * cos(2 * π * U2)
y = sqrt(-2 * log(U1)) * sin(2 * π * U2)
नोट:

बॉक्स-मुलर ट्रांसफॉर्म एक दूसरा परिणाम भी उत्पन्न करता है, y, लेकिन इसे बाद में उपयोग के लिए छोड़ा या बचाया जा सकता है।

यदि आपको 0 के अलावा किसी अन्य माध्य या 1 के अलावा किसी मानक विचलन के साथ सामान्य रूप से वितरित संख्याएँ उत्पन्न करने की आवश्यकता है, तो आप परिणाम को a से गुणा कर सकते हैं स्थिर।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3