मुझे जावास्क्रिप्ट में जावा के Java.util.Random()
को पोर्ट करने का कार्य दिया गया है, और मैंने पर्याप्त रूप से बड़ी संख्या में जावास्क्रिप्ट में बिटवाई ऑपरेटरों का उपयोग करके एक विशाल प्रदर्शन हिट/गलतता में भाग लिया है। कुछ कर्सर शोध में कहा गया है कि "जावास्क्रिप्ट में बिटवाई ऑपरेटर स्वाभाविक रूप से धीमे होते हैं," क्योंकि आंतरिक रूप से ऐसा प्रतीत होता है कि जावास्क्रिप्ट इसके सभी डबल मानों को बिटवाई ऑपरेशंस (see here) पर अधिक के लिए हस्ताक्षरित 32-बिट पूर्णांक में डालेगा।) इसके कारण , मैं जावा यादृच्छिक संख्या जेनरेटर का सीधा बंदरगाह नहीं कर सकता, और मुझे Java.util.Random()
के समान संख्यात्मक परिणाम प्राप्त करने की आवश्यकता है। जैसे48-बिट बिटवाई ऑपरेशंस?
this.next = function(bits) {
if (!bits) {
bits = 48;
}
this.seed = (this.seed * 25214903917 + 11) & ((1 << 48) - 1);
return this.seed >>> (48 - bits);
};
कुछ लेखन कोड (जो Java.util.Random()
की एक लगभग प्रत्यक्ष बंदरगाह है) ठीक से काम नहीं करेंगे, क्योंकि जावास्क्रिप्ट है कि आकार एक पूर्णांक पर बिटवाइज़ संचालन नहीं कर सकते।)
मैं मैंने यह पता लगाया है कि मैं लेहमेर एल्गोरिदम का उपयोग करके 32-बिट स्पेस में केवल एक बीज योग्य यादृच्छिक संख्या जेनरेटर बना सकता हूं, लेकिन चाल यह है कि मुझे Java.util.Random()
के साथ वही मान प्राप्त करने की आवश्यकता है। तेज, कार्यात्मक बंदरगाह बनाने के लिए मुझे क्या करना चाहिए?