Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C/C++ में नॉर्मल डिस्ट्रीब्यूशन फॉलो करने वाले रैंडम नंबर जनरेट करना


बॉक्स-मुलर ट्रांसफॉर्म का उपयोग करके यूनिफॉर्म डिस्ट्रीब्यूशन से नॉर्मल (गाउसियन) डिस्ट्रीब्यूशन वाले रैंडम नंबर उत्पन्न किए जा सकते हैं।

फॉर्मूला (बॉक्स-मुलर)

z = sqrt(-2 * ln(x1)) * cos(2 * π * x2)

जहां x1, x2 ∈ (0, 1] यूनिफॉर्म रैंडम वेरिएबल्स हैं।

उदाहरण

#include <cstdlib>
#include <cmath>
#include <ctime>
#include <iostream>
using namespace std;

double rand_gen() {
    // (0, 1] रेंज में यूनिफॉर्म रैंडम मान
    return ((double)rand() + 1.0) / ((double)RAND_MAX + 1.0);
}

double normalRandom() {
    double v1 = rand_gen();
    double v2 = rand_gen();
    return cos(2 * M_PI * v2) * sqrt(-2.0 * log(v1));
}

int main() {
    srand(time(0));  // सीड
    
    double sigma = 82.0;  // मानक विचलन
    double mu = 40.0;     // माध्य
    
    for (int i = 0; i < 20; i++) {
        double x = normalRandom() * sigma + mu;
        cout << "x = " << x << endl;
    }
    return 0;
}

आउटपुट (नमूना)

x = 1.91628
x = 57.0448
x = 51.4348
x = 53.5612
x = -83.8511
x = -28.9197
x = -76.0576
x = 62.1435
x = 23.9
x = -87.0663
x = 50.6942
x = 94.1685
x = -88.1597
x = 168.502
x = 40.7563
x = 90.1091
x = 16.9218
x = -36.9178
x = 135.969
x = 56.8888

आधुनिक C++ दृष्टिकोण (C++11+)

#include <random>
#include <iostream>

int main() {
    std::random_device rd;
    std::mt19937 gen(rd());
    std::normal_distribution<> dist(40.0, 82.0);  // माध्य, मानक विचलन
    
    for (int i = 0; i < 20; i++)
        std::cout << "x = " << dist(gen) << '\n';
    return 0;
}

नोट

  • M_PI के लिए #define _USE_MATH_DEFINES (MSVC) या #include <cmath> के साथ M_PI या 3.14159265358979323846 उपयोग करें।
  • आधुनिक C++ <random> लाइब्रेरी अधिक विश्वसनीय और मानक-अनुरूप है।
  1. - C# में सुरक्षित रैंडम नंबर जेनरेट करना: RNGCryptoServiceProvider

    क्रिप्टोग्राफिक रूप से सुरक्षित रैंडम नंबर्स के लिए C# में RNGCryptoServiceProvider क्लास का उपयोग किया जाता है। यह System.Security.Cryptography नेमस्पेस में है और एक क्रिप्टोग्राफिक रैंडम नंबर जेनरेटर (RNG) लागू करता है। सामान्य Random क्लास प्रिडिक्टेबल होती है, जबकि यह क्लास सुरक्षा-संवेदनशील का

  1. - पायथन में छद्म-यादृच्छिक संख्या जनरेट करना (random मॉड्यूल)

    कई कंप्यूटर एप्लिकेशन्स को यादृच्छिक संख्या जनरेट करने की आवश्यकता होती है। हालांकि, उनमें से कोई भी वास्तव में यादृच्छिक संख्या जनरेट नहीं करता। पायथन, किसी अन्य प्रोग्रामिंग तकनीक की तरह, एक छद्म-यादृच्छिक जनरेटर का उपयोग करता है। पायथन की यादृच्छिक जनरेशन Mersenne Twister एल्गोरिदम पर आधारित है ज

  1. - Python NumPy का उपयोग करके यादृच्छिक संख्याएँ कैसे उत्पन्न करें?

    NumPy के साथ यादृच्छिक संख्या उत्पन्न करना NumPy पैकेज में random मॉड्यूल में यादृच्छिक संख्याओं के उत्पन्न करने के लिए कई फ़ंक्शन हैं। numpy.random.rand() - दिए गए आकार का एक ऐरे बनाता है और इसे यादृच्छिक नमूनों से भरता है। >>> import numpy as np >>> np.random.rand(3, 2) array([