मर्सेन ट्विस्टर

मेर्सन ट्विस्टर एक सामान्य प्रयोजन छद्म यादृच्छिक संख्या जनरेटर (पीआरएनजी) है जिसे 1997 में विकसित किया गया था (松本 眞) और Takuji Nishimura (西村 拓士). इसका नाम इस तथ्य से लिया गया है कि इसकी अवधि की लंबाई को मेर्सन प्रीमियम के रूप में चुना गया है।

मेर्सन ट्विस्टर को विशेष रूप से पुराने पीआरएनजी में पाई गई अधिकांश खामियों को दूर करने के लिए डिज़ाइन किया गया था।

मेर्सन ट्विस्टर एल्गोरिदम का सबसे अधिक इस्तेमाल किया जाने वाला संस्करण मेर्सन प्राइम पर आधारित है $$2^{19937}-1$$. इसका मानक कार्यान्वयन, MT19937, 32-बिट शब्द लंबाई का उपयोग करता है। एक और कार्यान्वयन है (पांच वेरिएंट के साथ)। ) जो 64-बिट शब्द लंबाई, MT19937-64 का उपयोग करता है; यह एक अलग क्रम उत्पन्न करता है।

सॉफ्टवेयर
निम्नलिखित सॉफ्टवेयर द्वारा मेर्सन ट्विस्टर को डिफ़ॉल्ट पीआरएनजी के रूप में उपयोग किया जाता है:

यह अपाचे कॉमन्स में भी उपलब्ध है, मानक C++ लाइब्रेरी में (C++11 के बाद से), और गणित में. बूस्ट (सी++ लाइब्रेरीज़)|बूस्ट सी++ लाइब्रेरीज़ सहित कई प्रोग्राम लाइब्रेरीज़ में ऐड-ऑन कार्यान्वयन प्रदान किए जाते हैं। सीयूडीए, और एनएजी न्यूमेरिकल लाइब्रेरी। मेर्सन ट्विस्टर एसपीएसएस में दो पीआरएनजी में से एक है: अन्य जनरेटर केवल पुराने कार्यक्रमों के साथ संगतता के लिए रखा गया है, और मेर्सन ट्विस्टर को अधिक विश्वसनीय बताया गया है। मेर्सन ट्विस्टर इसी तरह एसएएस (सॉफ्टवेयर) में पीआरएनजी में से एक है: अन्य जनरेटर पुराने और अप्रचलित हैं। मेर्सन ट्विस्टर स्टाटा में डिफ़ॉल्ट पीआरएनजी है, दूसरा स्टाटा के पुराने संस्करणों के साथ संगतता के लिए KISS (एल्गोरिदम) है।
 * प्रोग्रामिंग भाषाएँ: डायलोग एपीएल (प्रोग्रामिंग भाषा), आईडीएल (प्रोग्रामिंग भाषा), आर (प्रोग्रामिंग भाषा), रूबी (प्रोग्रामिंग भाषा), फ़्री पास्कल, PHP (प्रोग्रामिंग भाषा), पायथन (प्रोग्रामिंग भाषा) (NumPy में भी उपलब्ध है, हालाँकि संस्करण 1.17 के बजाय डिफ़ॉल्ट को Permuted congruential जनरेटर में बदल दिया गया था) ),  सीएमयू कॉमन लिस्प, एंबेडेबल कॉमन लिस्प, स्टील बैंक कॉमन लिस्प, जूलिया (प्रोग्रामिंग भाषा) (जूलिया 1.6 एलटीएस तक, अभी भी बाद में उपलब्ध है, लेकिन 1.7 के रूप में डिफ़ॉल्ट रूप से एक बेहतर/तेज़ आरएनजी का उपयोग किया जाता है)
 * लिनक्स लाइब्रेरी और सॉफ्टवेयर: जीएलआईबी, जीएनयू एकाधिक परिशुद्धता अंकगणित लाइब्रेरी, जीएनयू ऑक्टेव, जीएनयू वैज्ञानिक पुस्तकालय
 * अन्य: Microsoft Excel, गॉस (सॉफ्टवेयर), ग्रेटल था, सेजमैथ, साइलैब, मेपल (सॉफ्टवेयर), मतलब

लाभ

 * अनुमेय सॉफ़्टवेयर लाइसेंस|क्रिप्टएमटी को छोड़कर सभी वेरिएंट के लिए अनुमेय-लाइसेंसीकृत और पेटेंट-मुक्त।
 * सांख्यिकीय यादृच्छिकता के लिए कई परीक्षण पास करता है, जिसमें डाइहार्ड परीक्षण और अधिकांश, लेकिन सभी TestU01 परीक्षण शामिल नहीं हैं।
 * बहुत लम्बी अवधि $$2^{19937}-1$$. ध्यान दें कि जबकि लंबी अवधि यादृच्छिक संख्या जनरेटर में गुणवत्ता की गारंटी नहीं है, छोटी अवधि, जैसे कि $$2^{32}$$ कई पुराने सॉफ़्टवेयर पैकेजों में सामान्य, समस्याग्रस्त हो सकता है।
 * #k-वितरण|k-वितरित प्रत्येक के लिए 32-बिट सटीकता $$1 \le k \le 623$$ (k-वितरित की परिभाषा के लिए, #k-वितरण देखें)
 * कार्यान्वयन आम तौर पर हार्डवेयर-कार्यान्वित तरीकों की तुलना में तेजी से यादृच्छिक संख्याएं बनाता है। एक अध्ययन में पाया गया कि मेर्सन ट्विस्टर हार्डवेयर-कार्यान्वित, प्रोसेसर-आधारित RDRAND निर्देश सेट की तुलना में लगभग बीस गुना तेजी से 64-बिट फ़्लोटिंग पॉइंट यादृच्छिक संख्याएँ बनाता है।

नुकसान

 * 2.5 KiB का अपेक्षाकृत बड़ा राज्य बफर, जब तक कि TinyMT वैरिएंट (नीचे चर्चा की गई) का उपयोग नहीं किया जाता है।
 * आधुनिक मानकों के अनुसार औसत दर्जे का थ्रूपुट, जब तक कि एसएफएमटी संस्करण (नीचे चर्चा की गई) का उपयोग नहीं किया जाता है।
 * TestU01 सुइट में क्रश और बिगक्रश दोनों में दो स्पष्ट विफलताएं (रैखिक जटिलता) प्रदर्शित होती हैं। मेर्सन ट्विस्टर की तरह परीक्षण, एक पर आधारित है $$\textbf{F}_2$$-बीजगणित। * कई उदाहरण जो केवल बीज मूल्य (लेकिन अन्य मापदंडों में नहीं) में भिन्न होते हैं, आम तौर पर मोंटे कार्लो सिमुलेशन  के लिए उपयुक्त नहीं होते हैं। मोंटे-कार्लो सिमुलेशन के लिए स्वतंत्र यादृच्छिक संख्या जनरेटर की आवश्यकता होती है, हालांकि पैरामीटर मानों के कई सेट चुनने के लिए एक विधि मौजूद है।
 * खराब प्रसार: यादृच्छिकता परीक्षण  पास करने वाले आउटपुट को उत्पन्न करने में लंबा समय लग सकता है, यदि प्रारंभिक स्थिति अत्यधिक गैर-यादृच्छिक है - खासकर यदि प्रारंभिक स्थिति में कई शून्य हैं। इसका एक परिणाम यह है कि जनरेटर के दो उदाहरण, प्रारंभिक अवस्थाओं के साथ शुरू हुए जो लगभग समान हैं, आमतौर पर अंततः अलग होने से पहले, कई पुनरावृत्तियों के लिए लगभग समान अनुक्रम का उत्पादन करेंगे। एमटी एल्गोरिदम के लिए 2002 के अपडेट ने आरंभीकरण में सुधार किया है, इसलिए ऐसी स्थिति के साथ शुरुआत करना बहुत ही असंभव है। GPU संस्करण (MTGP) को और भी बेहतर बताया गया है।
 * इसमें 1 से अधिक 0 वाले अनुवर्ती शामिल हैं। इससे कई-शून्य राज्यों से पुनर्प्राप्ति को कठिन बनाने के लिए खराब प्रसार संपत्ति जुड़ जाती है।
 * सीएसपीआरएनजी नहीं है, जब तक कि क्रिप्टएमटी वैरिएंट (नीचे चर्चा की गई) का उपयोग नहीं किया जाता है। इसका कारण यह है कि पर्याप्त संख्या में पुनरावृत्तियों (MT19937 के मामले में 624, क्योंकि यह राज्य वेक्टर का आकार है जिससे भविष्य की पुनरावृत्तियाँ उत्पन्न होती हैं) का अवलोकन करने से किसी को भविष्य की सभी पुनरावृत्तियों की भविष्यवाणी करने की अनुमति मिलती है।

विकल्प
एक वैकल्पिक जनरेटर, अच्छी तरह से समान वितरित लंबी अवधि रैखिक (अच्छी तरह से समान रूप से वितरित लंबी अवधि की रैखिक), त्वरित पुनर्प्राप्ति, समान यादृच्छिकता और लगभग समान गति प्रदान करता है। मार्साग्लिया के ए xorshift जनरेटर और वेरिएंट एलएफएसआर की श्रेणी में सबसे तेज़ हैं। 64-बिट एमईएलजी (64-बिट अधिकतम समान वितरित $$\textbf{F}_2$$-मेर्सन प्राइम पीरियड के साथ लीनियर जेनरेटर) के-वितरण गुणों के संदर्भ में पूरी तरह से अनुकूलित हैं। ACORN (PRNG) (प्रकाशित 1989) एक और k-वितरित PRNG है, जो MT के समान कम्प्यूटेशनल गति और बेहतर सांख्यिकीय गुण दिखाता है क्योंकि यह सभी मौजूदा (2019) TestU01 मानदंडों को पूरा करता है; जब मापदंडों के उचित विकल्पों के साथ उपयोग किया जाता है, तो ACORN में मनमाने ढंग से लंबी अवधि और सटीकता हो सकती है।

पर्म्यूटेड सर्वांगसम जनरेटर एक अधिक आधुनिक लंबी अवधि वाला जनरेटर है, जिसमें बेहतर कैश स्थानीयता और आधुनिक विश्लेषण विधियों का उपयोग करके कम पता लगाने योग्य पूर्वाग्रह है।

के-वितरण
एक छद्म यादृच्छिक क्रम $$x_i$$ अवधि P के w-बिट पूर्णांकों को k-वितरित v-बिट सटीकता के लिए कहा जाता है यदि निम्नलिखित मान्य हो।


 * ट्रंक करने दोv(x) x के अग्रणी v बिट्स द्वारा बनाई गई संख्या को निरूपित करें, और k v-बिट वैक्टर के P पर विचार करें
 * $$ (\operatorname{trunc}_v(x_i), \operatorname{trunc}_v(x_{i+1}), \, \ldots, \operatorname{trunc}_v(x_{i+k-1})) \quad (0\leq i< P) $$.
 * फिर प्रत्येक $$2^{kv}$$ बिट्स का संभावित संयोजन एक अवधि में समान संख्या में होता है, पूर्ण-शून्य संयोजन को छोड़कर जो एक बार कम बार होता है।

एल्गोरिथम विवरण
डब्ल्यू-बिट शब्द लंबाई के लिए, मेर्सन ट्विस्टर श्रेणी में पूर्णांक उत्पन्न करता है $$[0, 2^w-1]$$.

मेर्सन ट्विस्टर एल्गोरिदम एक परिमित बाइनरी अंक प्रणाली फ़ील्ड (गणित) पर पुनरावृत्ति संबंध पर आधारित है $$\textbf{F}_2$$. एल्गोरिदम एक मुड़ा हुआ सामान्यीकृत फीडबैक शिफ्ट रजिस्टर है (ट्विस्टेड जीएफएसआर, या टीजीएफएसआर) तर्कसंगत सामान्य रूप (टीजीएफएसआर (आर)) के साथ, स्टेट बिट रिफ्लेक्शन और टेम्परिंग के साथ। मूल विचार एक श्रृंखला को परिभाषित करना है $$x_i$$ एक सरल पुनरावृत्ति संबंध के माध्यम से, और फिर फॉर्म की आउटपुट संख्याएँ $$x_i^T$$, जहां T एक व्युत्क्रमणीय है $$\textbf{F}_2$$-मैट्रिक्स को टेम्पर्ड प्रतिनिधित्व कहा जाता है।

सामान्य एल्गोरिदम को निम्नलिखित मात्राओं द्वारा दर्शाया जाता है (इनमें से कुछ स्पष्टीकरण शेष एल्गोरिदम को पढ़ने के बाद ही समझ में आते हैं):


 * w: शब्द का आकार (बिट्स की संख्या में)
 * एन: पुनरावृत्ति की डिग्री
 * एम: मध्य शब्द, श्रृंखला को परिभाषित करने वाले पुनरावृत्ति संबंध में प्रयुक्त एक ऑफसेट $$x$$, $$1 \le m < n$$
 * आर: एक शब्द का पृथक्करण बिंदु, या निचले बिटमास्क के बिट्स की संख्या, $$0 \le r \le w - 1$$
 * ए: तर्कसंगत सामान्य रूप ट्विस्ट मैट्रिक्स के गुणांक
 * बी, सी: टीजीएफएसआर (आर) टेम्परिंग बिटमास्क
 * एस, टी: टीजीएफएसआर (आर) टेम्परिंग बिट शिफ्ट
 * यू, डी, एल: अतिरिक्त मेर्सन ट्विस्टर टेम्परिंग बिट शिफ्ट/मास्क

उस प्रतिबंध के साथ $$2^{nw-r}-1$$ एक मेरसेन प्राइम है। यह विकल्प आदिमता परीक्षण और K-वितरण|k-वितरण परीक्षण को सरल बनाता है जो पैरामीटर खोज में आवश्यक हैं।

श्रृंखला $$x$$ पुनरावृत्ति संबंध के साथ डब्ल्यू-बिट मात्राओं की एक श्रृंखला के रूप में परिभाषित किया गया है:


 * $$x_{k+n} := x_{k+m} \oplus \left( ({x_k}^u \mid {x_{k+1}}^l) A \right)\qquad

k=0,1,\ldots$$ कहाँ $$\mid$$ बिट वैक्टरों के संयोजन को दर्शाता है (बाईं ओर ऊपरी बिट्स के साथ), $$ \oplus

$$ बिटवाइज़ एकमात्र (XOR), $$ x_{k}^{u}

$$ मतलब ऊपरी w − r का $$ x_k

$$, और $$ x_{k+1}^{l}

$$ का मतलब निम्न आर बिट्स है $$ x_{k+1}

$$. मोड़ परिवर्तन ए को तर्कसंगत सामान्य रूप में परिभाषित किया गया है:$$ A = \begin{pmatrix} 0 & I_{w - 1} \\ a_{w-1} & (a_{w - 2}, \ldots, a_0) \end{pmatrix} $$साथ $$ I_{w-1}

$$ के रूप में $$ (w-1)(w-1) $$ शिनाख्त सांचा। तर्कसंगत सामान्य रूप का लाभ यह है कि ए द्वारा गुणा को कुशलतापूर्वक इस प्रकार व्यक्त किया जा सकता है: (याद रखें कि यहां मैट्रिक्स गुणा किया जा रहा है $$ \textbf{F}_{2}

$$, और इसलिए बिटवाइज़ XOR जोड़ का स्थान लेता है)$$ \boldsymbol{x}A = \begin{cases}\boldsymbol{x} \gg 1 & x_0 = 0\\(\boldsymbol{x} \gg 1) \oplus \boldsymbol{a} & x_0 = 1\end{cases} $$कहाँ $$ x_0

$$ का निम्नतम ऑर्डर बिट है $$ x

$$.

टीजीएफएसआर (आर) की तरह, मेर्सन ट्विस्टर को समान वितरण की कम आयामीता की भरपाई के लिए एक टेम्पर्ड प्रतिनिधित्व के साथ कैस्केड किया गया है (ए की पसंद तर्कसंगत सामान्य रूप में होने के कारण)। ध्यान दें कि यह मैट्रिक्स ए का उपयोग करने के बराबर है $$ A = T^{-1}*AT

$$ टी के लिए एक उलटा मैट्रिक्स, और इसलिए नीचे उल्लिखित विशेषता बहुपद का विश्लेषण अभी भी मान्य है।

ए के साथ, हम आसानी से गणना करने योग्य होने के लिए एक टेम्परिंग ट्रांसफॉर्म चुनते हैं, और इसलिए वास्तव में टी का निर्माण नहीं करते हैं। मेर्सन ट्विस्टर के मामले में तड़के को इस प्रकार परिभाषित किया गया है



\begin{aligned} y &\equiv x \oplus ((x\gg u)~\And~d)\\ y &\equiv y \oplus ((y\ll s)~\And~b)\\ y &\equiv y \oplus ((y\ll t)~\And~c)\\ z &\equiv y \oplus (y\gg l) \end{aligned} $$ कहाँ $$x$$ श्रृंखला से अगला मान है, $$y$$ एक अस्थायी मध्यवर्ती मूल्य है, और $$z$$ एल्गोरिथ्म से लौटाया गया मान है $$\ll$$और $$\gg$$ बिट-शिफ्ट के रूप में, और $$\&$$ बिटवाइज तार्किक संयोजन के रूप में। निचले-बिट समवितरण को बेहतर बनाने के लिए पहला और आखिरी परिवर्तन जोड़ा जाता है। टीजीएफएसआर की संपत्ति से, $$s + t \ge \lfloor{\frac{w}{2}}\rfloor - 1$$ ऊपरी बिट्स के लिए समवितरण की ऊपरी सीमा तक पहुंचना आवश्यक है।

MT19937 के लिए गुणांक हैं:

$$ \begin{aligned} (w, n, m, r) &= (32, 624, 397, 31)\\ a &= \textrm{9908B0DF}_{16}\\ (u, d) &= (11, \textrm{FFFFFFFF}_{16})\\ (s, b) &= (7, \textrm{9D2C5680}_{16})\\ (t, c) &= (15, \textrm{EFC60000}_{16})\\ l &= 18\\ \end{aligned} $$ ध्यान दें कि मेर्सन ट्विस्टर के 32-बिट कार्यान्वयन में आम तौर पर d = FFFFFFFF होता है16. परिणामस्वरूप, कभी-कभी डी को एल्गोरिदम विवरण से हटा दिया जाता है, क्योंकि उस स्थिति में डी के साथ बिटवाइज़ तार्किक संयोजन का कोई प्रभाव नहीं पड़ता है।

MT19937-64 के लिए गुणांक हैं:

$$ \begin{aligned} (w, n, m, r) = (64, 312, 156, 31)\\ a = \textrm{B5026F5AA96619E9}_{16}\\ (u, d) = (29, \textrm{5555555555555555}_{16})\\ (s, b) = (17, \textrm{71D67FFFEDA60000}_{16})\\ (t, c) = (37, \textrm{FFF7EEE000000000}_{16})\\ l = 43\\ \end{aligned}

$$

आरंभीकरण
मेर्सन ट्विस्टर कार्यान्वयन के लिए आवश्यक स्थिति प्रत्येक डब्ल्यू बिट्स के एन मानों की एक सरणी है। सरणी को प्रारंभ करने के लिए, आपूर्ति के लिए एक w-बिट बीज मान का उपयोग किया जाता है $$x_0$$ द्वारा $$x_{n-1}$$ व्यवस्थित करके $$x_0$$ बीज मूल्य और उसके बाद सेटिंग



x_i = f \times (x_{i-1} \oplus (x_{i-1} \gg (w-2))) + i $$ के लिए $$i$$ से $$1$$ को $$n-1$$.


 * एल्गोरिदम द्वारा उत्पन्न पहला मान उस पर आधारित होता है $$x_n$$, पर नहीं $$x_0$$.
 * स्थिरांक f जनरेटर के लिए एक और पैरामीटर बनाता है, हालांकि एल्गोरिदम का उचित हिस्सा नहीं है।
 * MT19937 के लिए f का मान 1812433253 है।
 * MT19937-64 के लिए f का मान 6364136223846793005 है।

शास्त्रीय जीएफएसआर के साथ तुलना
हासिल करने के लिए $$2^{nw-r}-1$$ टीजीएफएसआर में अवधि की सैद्धांतिक ऊपरी सीमा, $$\phi_{B}(t)$$ एक आदिम बहुपद (क्षेत्र सिद्धांत) होना चाहिए, $$\phi_{B}(t)$$ का अभिलक्षणिक बहुपद होना



B = \begin{pmatrix} 0 & I_w & \cdots & 0 & 0 \\ \vdots & & & & \\ I_w & \vdots & \ddots & \vdots & \vdots \\ \vdots & & & & \\ 0 & 0 & \cdots & I_w & 0 \\ 0 & 0 & \cdots & 0 & I_{w - r} \\ S & 0 & \cdots & 0 & 0 \end{pmatrix} \begin{matrix} \\ \\ \leftarrow m\text{-th row} \\ \\ \\ \\ \end{matrix} $$

S = \begin{pmatrix} 0 & I_r \\ I_{w - r} & 0 \end{pmatrix} A $$ ट्विस्ट परिवर्तन निम्नलिखित प्रमुख गुणों के साथ शास्त्रीय जीएफएसआर में सुधार करता है:


 * अवधि सैद्धांतिक ऊपरी सीमा तक पहुँचती है $$2^{nw-r}-1$$ (सिवाय यदि 0 से प्रारंभ किया गया हो)
 * एन आयामों में समान वितरण (उदाहरण के लिए रैखिक सर्वांगसम जनरेटर पांच आयामों में उचित वितरण का सर्वोत्तम प्रबंधन कर सकता है)

स्यूडोकोड
निम्नलिखित छद्मकोड सामान्य मेर्सन ट्विस्टर एल्गोरिथ्म को लागू करता है। स्थिरांक w, n, m, r, a, u, d, s, b, t, c, l, और f उपरोक्त एल्गोरिथम विवरण के अनुसार हैं। यह माना जाता है कि int w बिट्स के साथ मान रखने के लिए पर्याप्त प्रकार का प्रतिनिधित्व करता है: // जनरेटर की स्थिति को संग्रहीत करने के लिए एक लंबाई एन सरणी बनाएं int[0..n-1] एमटी पूर्णांक सूचकांक := n+1 const int low_mask = (1 << r) - 1 // अर्थात, r 1 की द्विआधारी संख्या स्थिरांक पूर्णांक ऊपरी_मास्क = निम्नतम डब्ल्यू बिट्स (बिटवाइज़ ऑपरेशन # लोअर_मास्क नहीं) // एक बीज से जनरेटर आरंभ करें फ़ंक्शन सीड_एमटी(इंट सीड) { सूचकांक := एन एमटी[0] := बीज i के लिए 1 से (n - 1) तक { // प्रत्येक तत्व पर लूप MT[i] := न्यूनतम w बिट्स (f * (MT[i-1] बिटवाइज़ ऑपरेशन#XOR (MT[i-1] >> (w-2))) + i)     } } // एमटी[सूचकांक] के आधार पर एक टेम्पर्ड मान निकालें // प्रत्येक n संख्या में ट्विस्ट को कॉल करना फ़ंक्शन एक्सट्रेक्ट_नंबर { यदि सूचकांक >= n { यदि सूचकांक > n { त्रुटि जेनरेटर कभी भी सीड नहीं किया गया था ''//वैकल्पिक रूप से, स्थिर मूल्य वाला बीज; 5489 का उपयोग संदर्भ सी कोड में किया जाता है } मोड़ }     'int' y := MT[सूचकांक] y := y 'बिटवाइज़ ऑपरेशन#XOR' ((y >> 'u') 'बिटवाइज़ ऑपरेशन#AND' 'd') y := y 'बिटवाइज़ ऑपरेशन#XOR' ((y << 's') 'बिटवाइज़ ऑपरेशन#AND' 'b') y := y 'बिटवाइज़ ऑपरेशन#XOR' ((y << 't') 'बिटवाइज़ ऑपरेशन#AND' 'c') y := y 'बिटवाइज़ ऑपरेशन#XOR' (y >> 'l') सूचकांक := सूचकांक + 1 (y) के निम्नतम 'w' बिट्स 'वापसी' करें } // श्रृंखला x_i से अगले n मान उत्पन्न करें 'फ़ंक्शन' ट्विस्ट { 'के लिए' मैं 'से' 0 'से' ('एन'-1) { 'int' x := (MT[i] 'बिटवाइज़ ऑपरेशन#AND' अपर_मास्क) | (एमटी[(i+1) 'मोडुलो ऑपरेशन' 'एन'] 'बिटवाइज़ ऑपरेशन#और' लोअर_मास्क) 'int' xA := x >> 1 'if' (x 'मोडुलो ऑपरेशन' 2) != 0 {// x का निम्नतम बिट 1 है xA := xA 'बिटवाइज़ ऑपरेशन#XOR' 'a'         } MT[i] := MT[(i + 'm') 'मोडुलो ऑपरेशन' 'n'] 'बिटवाइज़ ऑपरेशन#XOR' xA     } सूचकांक := 0 }

क्रिप्टएमटी
CryptMT एक धारा सिफर  और क्रिप्टोग्राफ़िक रूप से सुरक्षित छद्म यादृच्छिक संख्या जनरेटर है जो आंतरिक रूप से मेर्सन ट्विस्टर का उपयोग करता है। इसे मात्सुमोतो और निशिमुरा ने मारिको हागिटा और मुत्सुओ सैतो के साथ मिलकर विकसित किया था। इसे eCRYPT नेटवर्क के eSTREAM प्रोजेक्ट में सबमिट किया गया है। मेर्सन ट्विस्टर या इसके अन्य डेरिवेटिव के विपरीत, क्रिप्टएमटी सॉफ्टवेयर पेटेंट है।

एमटीजीपी
एमटीजीपी मुत्सुओ सैटो और माकोतो मात्सुमोतो द्वारा प्रकाशित ग्राफ़िक्स प्रोसेसिंग युनिट  के लिए अनुकूलित मेर्सन ट्विस्टर का एक प्रकार है। बुनियादी रैखिक पुनरावृत्ति संचालन को एमटी से बढ़ाया जाता है और मेमोरी लोड को कम करने के लिए अपने राज्य स्थान को साझा करते हुए, समानांतर में पुनरावृत्ति की गणना करने के लिए कई थ्रेड्स को अनुमति देने के लिए पैरामीटर चुने जाते हैं। पेपर में एमटी पर समान वितरण में सुधार और 5×10 के लिए 4.7 एमएस के बहुत पुराने जीपीयू (192 कोर के साथ ए NVIDIA  जीटीएक्स260) पर प्रदर्शन का दावा किया गया है।7यादृच्छिक 32-बिट पूर्णांक।

सुफ़ा
{{Expand section|date=June 2007}एसएफएमटी (एकल निर्देश, एकाधिक डेटा-उन्मुख फास्ट मेर्सन ट्विस्टर) मेर्सन ट्विस्टर का एक प्रकार है, जिसे 2006 में पेश किया गया था। 128-बिट SIMD पर चलने पर इसे तेज़ बनाने के लिए डिज़ाइन किया गया है।


 * यह मेरसेन ट्विस्टर से लगभग दोगुना तेज़ है।
 * इसमें एमटी की तुलना में वी-बिट सटीकता की बेहतर समान वितरण संपत्ति है, लेकिन वेल इक्विडिस्ट्रिब्यूटेड लॉन्ग-पीरियड लीनियर | वेल (वेल इक्विडिस्ट्रिब्यूटेड लॉन्ग-पीरियड लीनियर) से भी बदतर है।
 * इसमें MT की तुलना में शून्य-अतिरिक्त प्रारंभिक अवस्था से त्वरित पुनर्प्राप्ति होती है, लेकिन WELL की तुलना में धीमी होती है।
 * यह 2 से विभिन्न अवधियों का समर्थन करता है607- 1 से 2216091--1.

Intel SSE2 और PowerPC AltiVec SFMT द्वारा समर्थित हैं। इसका उपयोग PlayStation 3 में सेल (माइक्रोप्रोसेसर) वाले गेम के लिए भी किया जाता है।

टाइनीएमटी
टाइनीएमटी मेरसेन ट्विस्टर का एक प्रकार है, जिसे 2011 में सैटो और मात्सुमोतो द्वारा प्रस्तावित किया गया था। TinyMT केवल 127 बिट्स स्टेट स्पेस का उपयोग करता है, जो मूल स्टेट के 2.5 KiB की तुलना में एक महत्वपूर्ण कमी है। हालाँकि, इसकी एक अवधि होती है $$ 2^{127}-1

$$, मूल से बहुत छोटा है, इसलिए लेखकों द्वारा इसकी अनुशंसा केवल उन मामलों में की जाती है जहां मेमोरी प्रीमियम पर है।

बाहरी संबंध

 * The academic paper for MT, and related articles by Makoto Matsumoto
 * Mersenne Twister home page, with codes in C, Fortran, Java, Lisp and some other languages
 * Mersenne Twister examples — a collection of Mersenne Twister implementations, in several programming languages - at GitHub
 * SFMT in Action: Part I – Generating a DLL Including SSE2 Support – at Code Project