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

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

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

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

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

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

एसपीएसएस में मेर्सन ट्विस्टर, दो पीआरएनजी में से एक है: अन्य उत्पन्नक केवल पुराने प्रोग्रामों के साथ संगतता हेतु रखा गया है, और मर्सेन ट्विस्टर को "अधिक विश्वसनीय" घोषित किया जाता है। मेर्सन ट्विस्टर इसी तरह एसएएस में विभिन्न पीआरएनजी में से एक है: अन्य उत्पन्नक पुराने और अप्रचलित हैं। मेर्सन ट्विस्टर स्टाटा में डिफ़ॉल्ट पीआरएनजी है, दूसरा स्टाटा के पुराने संस्करणों के साथ संगतता के लिए केआइएसएस विधिकलन का उपयोग किया जाता है।

लाभ

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

हानि

 * 2.5 KiB का अपेक्षाकृत बड़ा स्टेट बफर, जब तक कि टाइनीएमटी संस्करण का उपयोग नहीं किया जाता है।
 * आधुनिक मानकों के अनुसार औसत श्रेणी का थ्रूपुट, जब तक कि एसएफएमटी संस्करण का उपयोग नहीं किया जाता है।
 * TestU01 सुइट में क्रश और बिगक्रश दोनों में दो स्पष्ट विफलताएं प्रदर्शित होती हैं। मेर्सन ट्विस्टर की तरह परीक्षण, एक $$\textbf{F}_2$$-बीजगणित पर आधारित है। * कई उदाहरण जो केवल बीजगणितीय मानों में भिन्न होते हैं, सामान्यतः मोंटे कार्लो सिमुलेशन के लिए उपयुक्त नहीं होते हैं। मोंटे-कार्लो सिमुलेशन के लिए स्वतंत्र यादृच्छिक संख्या उत्पन्नक की आवश्यकता होती है, यद्यपि पैरामीटर मानों के कई समुच्चयों को चुनने के लिए एक विधि उपलब्ध है।
 * खराब प्रसार: यदि प्रारंभिक स्थिति अत्यधिक गैर-यादृच्छिक है - विशेषकर यदि प्रारंभिक स्थिति में कई शून्य हैं तो यादृच्छिकता परीक्षण उत्तीर्ण करने वाले आउटपुट को उत्पन्न करने में लंबा समय लग सकता है। इसका एक परिणाम यह है कि उत्पन्नक के दो उदाहरण, प्रारंभिक अवस्थाओं के साथ प्रारंभ हुए जो लगभग समान हैं, सामान्यतः अंततः अलग होने से पहले, कई पुनरावृत्तियों के लिए लगभग समान अनुक्रम का उत्पादन करते हैं। एमटी विधिकलन के लिए 2002 के अपडेट ने आरंभीकरण में सुधार किया है, इसलिए ऐसी स्थिति के साथ प्रारंभ करना असंभव है। जीपीयू संस्करण एमटीजीपी को और भी बेहतर बताया गया है।
 * इसमें 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' yt:= 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' xAA:= x >> 1 'if' (x 'मोडुलो ऑपरेशन' 2)2!= 0 {// x का निम्नतम बिट 1 है xA := xA 'बिटवाइज़ ऑपरेशन#XOR' 'a'         } MT[i]M:= 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