Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

छद्म यादृच्छिक संख्या पीढ़ी के लिए रैखिक सर्वांगसम जनरेटर को लागू करने के लिए सी ++ कार्यक्रम

रैखिक सर्वांगसम जनरेटर एक यादृच्छिक संख्या जनरेटर का एक बहुत ही सरल उदाहरण है। यह सबसे पुराने और सबसे प्रसिद्ध छद्म यादृच्छिक संख्या जनरेटर एल्गोरिदम में से एक है। इस विधि में प्रयोग किया जाने वाला फंक्शन -

Xn+1=(aXn + C) mod m

जहाँ X छद्म यादृच्छिक मानों का क्रम है, और

m,0<m— the “modulus"
a,0<a<m — the "multiplier"
c,0<c<m — the "increment"
X0, 0<x0<m — the "seed" or "start value"

पूर्णांक स्थिरांक हैं जो जनरेटर को निर्दिष्ट करते हैं।

इस पद्धति का एक लाभ यह है कि मापदंडों के उपयुक्त विकल्प के साथ, अवधि ज्ञात और लंबी होती है।

एल्गोरिदम

Begin
   Declare class mRND
   Create a function Seed(number)
      Assign a variable _seed=number
      Create a constructor mRND
   Declare _seed(0), a(0), c(0), m(2147483648)
   Create a function rnd()
      Return
         _seed = (a * _seed + c) mod m
      Declare a, c, m, _seed
   Done
   Declare an another subclass MS_RND inheriting from base class mRND
   Create a constructor
      Read the variables a, c
      Create a function rnd()
      return mRND::rnd() right shift 16
   Done
   Declare an another subclass BSD_RND inheriting from base class mRND
   Create a constructor
      Read the variables a, c
      Create a function rnd()
      return mRND::rnd()
   Done
   For x=0 to 6
      Print MS_RAND
   For x=0 to 6
      Print BSD_RAND
   Done
End

उदाहरण कोड

#include <iostream>
using namespace std;
class mRND {
   public:
   void seed(unsigned int s) {
      _seed= s;
   }
   protected:
   mRND() :
   _seed(0), a(0), c(0), m(2147483648) { }
   int rnd() {
      return (_seed = (a * _seed + c) % m);
   }
   int a, c;
   unsigned int m, _seed;
};
class MS_RND: public mRND {
   public:
   MS_RND() {
      a = 214013;
      c = 2531011;
   }
   int rnd() {
      return mRND::rnd() >> 16;
   }
};
class BSD_RND: public mRND {
   public:
   BSD_RND() {
      a = 1016404597;
      c = 12345;
   }
   int rnd() {
      return mRND::rnd();
   }
};
int main(int argc, char* argv[]) {
   BSD_RND bsd_rnd;
   MS_RND ms_rnd;
   cout << "MS RAND:" << endl << "-----------" << endl;
   for (int x = 0; x < 6; x++)
      cout << ms_rnd.rnd() << endl;
   cout << endl << "BSD RAND:" << endl << "-------------" << endl;
   for (int x = 0; x < 6; x++)
      cout << bsd_rnd.rnd() << endl;
      return 0;
}

आउटपुट

MS RAND:
-------
38
7719
21238
2437
8855
11797
BSD RAND:
--------
12345
1915290694
1005338679
629284700
741596485
1834373826

  1. हेक्साडेसिमल से दशमलव के लिए C++ प्रोग्राम

    एक इनपुट के रूप में एक हेक्साडेसिमल संख्या के साथ दिया गया, कार्य दिए गए हेक्साडेसिमल संख्या को दशमलव संख्या में परिवर्तित करना है। कंप्यूटर में हेक्साडेसिमल संख्या को आधार 16 के साथ दर्शाया जाता है और दशमलव संख्या को आधार 10 के साथ दर्शाया जाता है और 0 - 9 के मूल्यों के साथ दर्शाया जाता है जबकि हे

  1. C++ प्रोग्राम एक DAG के लिए एक रैंडम लीनियर एक्सटेंशन बनाने के लिए

    यहां हम देखेंगे कि डायरेक्टेड एसाइक्लिक ग्राफ (DAG) का रैंडम लीनियर एक्सटेंशन कैसे बनाया जाता है। रैखिक विस्तार मूल रूप से डीएजी की टोपोलॉजिकल सॉर्टिंग है। आइए मान लें कि ग्राफ नीचे जैसा है - एक निर्देशित चक्रीय ग्राफ के लिए स्थलीय छँटाई शिखरों का रैखिक क्रम है। निर्देशित ग्राफ़ के प्रत्येक किनार

  1. सी ++ प्रोग्राम विगेनियर साइफर को लागू करने के लिए

    Vigenere Cipher, अल्फ़ाबेटिक टेक्स्ट को एन्क्रिप्ट करने की एक तरह की पॉलीअल्फ़ाबेटिक प्रतिस्थापन विधि है। इस विधि में एन्क्रिप्शन और डिक्रिप्शन के लिए Vigenere Cipher Table का उपयोग किया जाता है जिसमें A से Z तक के अक्षर 26 पंक्तियों में लिखे जाते हैं। एन्क्रिप्शन कुंजी: स्वागत है संदेश: यहिस्ट