रुबी 1.9.2 में Random
कक्षा एक विशेष बीज और सीमा के अनुसार, उसी क्रम में यादृच्छिक संख्या उत्पन्न करने की गारंटी है।रुबी में वितरित अनुक्रमिक यादृच्छिक संख्या पीढ़ी 1.9.2
r = Random.new(23)
r.rand(100) # 83
r.rand(100) # 40
लेकिन लगता है मुझे (अनुक्रम में पहले नंबर पुन: तैयार करने के बिना) किसी अन्य कंप्यूटर पर क्रम में अगला नंबर उत्पन्न करना चाहते हैं: उदाहरण के लिए। पिछले आउटपुट को देखते हुए यह संभव होना चाहिए। Random
कक्षा के साथ ऐसा करने का कोई तरीका है? या मुझे Mersenne twister का अपना कार्यान्वयन लिखना है?
[संपादित करें: के रूप में नीचे टिप्पणी में बताया, यह वास्तव में संभव है, सिर्फ उत्पादन से एक Random
उदाहरण की स्थिति का निर्धारण करने के लिए है, क्योंकि राज्य का ही हिस्सा (विशेष रूप से, कम 32 बिट) आउटपुट के लिए उपयोग किया जाता है।]
ऐसा करना क्यों संभव होना चाहिए? – adamse
@adamse अगली संख्या 'आर' में कुछ आंतरिक स्थिति को निश्चित रूप से दी गई है। तो यदि आप पुराने राज्य के समान राज्य के साथ एक नया 'आर' बनाते हैं, तो यह अनुक्रम में अगला नंबर उत्पन्न करेगा। समझ में आता है? 'रैंडम' के अंतर्गत एल्गोरिदम की मेरी समझ के आधार पर, मेरा मानना है कि इस राज्य को बीज और अंतिम उत्पन्न संख्या द्वारा दर्शाया जा सकता है। –
[पिछलापोर्ट] पढ़ना (http://github.com/marcandre/backports/blob/master/lib/backports/1.9.2/random/MT19937.rb) कार्यान्वयन ऐसा लगता है कि वास्तव में आप अगले राज्य को ढूंढकर देख सकते हैं अंतिम और बीज। हालांकि जहां तक मैं समझता हूं कि आप उत्पन्न संख्या को देखते हुए राज्य नहीं ढूंढ पाएंगे। – adamse