यादृच्छिक संख्याएँ उत्पन्न करना

Haskell:
यादृच्छिक संख्याएँ उत्पन्न करना

कैसे करें:

Haskell में यादृच्छिक संख्याओं को उत्पन्न करने के लिए, आमतौर पर random पैकेज का उपयोग किया जाता है, जो Haskell Platform का भाग है। यहाँ एक कदम-दर-कदम मार्गदर्शिका है:

पहले, सुनिश्चित करें कि आपके पास random पैकेज स्थापित है। अगर नहीं, तो आप इसे Cabal या Stack के माध्यम से प्राप्त कर सकते हैं।

एक यादृच्छिक संख्या उत्पन्न करना

एक सरल यादृच्छिक संख्या उत्पन्न करने के लिए, आप randomRIO फ़ंक्शन का उपयोग कर सकते हैं, जो एक निर्दिष्ट सीमा के भीतर एक यादृच्छिक मान उत्पन्न करता है।

import System.Random (randomRIO)

main :: IO ()
main = do
  randomNumber <- randomRIO (1, 10) :: IO Int
  putStrLn $ "Random number: " ++ show randomNumber

यादृच्छिक संख्याओं की सूची उत्पन्न करना

यादृच्छिक संख्याओं की एक सूची उत्पन्न करना थोड़ा अधिक शामिल है लेकिन फिर भी सीधा है:

import System.Random (randomRIO)

randomList :: Int -> IO [Int]
randomList 0 = return []
randomList n = do
  r <- randomRIO (1, 100)
  rs <- randomList (n-1)
  return (r:rs)

main :: IO ()
main = do
  numbers <- randomList 5
  print numbers

यह कोड स्निपेट randomList नामक एक फ़ंक्शन बनाता है जो यादृच्छिक पूर्णांकों की एक सूची उत्पन्न करता है। अपनी वांछित सीमा के साथ (1, 100) को प्रतिस्थापित करें।

गहराई से जानकारी

Haskell random पैकेज एक प्स्यूडो-यादृच्छिक संख्या जनरेटर (PRNG) प्रदान करता है, जिसका अर्थ है कि उत्पन्न संख्याएँ वास्तव में यादृच्छिक नहीं होती हैं लेकिन कई अनुप्रयोगों के लिए यादृच्छिक प्रतीत हो सकती हैं। Haskell की यादृच्छिक जनरेशन क्षमता का मूल RandomGen टाइप क्लास में है, जो यादृच्छिक संख्याओं को उत्पन्न करने की विभिन्न विधियों को अमूर्त करता है, और Random टाइप क्लास में, जिसमें ऐसे प्रकार शामिल हैं जो यादृच्छिक रूप से उत्पन्न किए जा सकते हैं।

ऐतिहासिक रूप से, Haskell के यादृच्छिक संख्या उत्पन्न करने के दृष्टिकोण ने शुद्धता और पुन: उत्पादन योग्यता पर जोर दिया है। इसलिए, यादृच्छिकता से संबंधित ऑपरेशनों को स्पष्ट रूप से IO मोनाड में संभाला जाता है या जनरेटर स्थितियों को मैन्युअली पास करने और अपडेट करने की आवश्यकता होती है - सन्दर्भीय पारदर्शिता बनाए रखने के लिए।

कुछ अनुप्रयोगों में, जैसे की क्रिप्टोग्राफी, डिफ़ॉल्ट PRNG द्वारा उत्पन्न प्स्यूडो-यादृच्छिक संख्याएँ पर्याप्त सुरक्षित नहीं हो सकती हैं। इन उपयोग के मामलों के लिए, Haskell प्रोग्रामर अक्सर क्रिप्टोग्राफिक अनुप्रयोगों के कठिन मांगों को पूरा करने के लिए डिज़ाइन की गई अधिक विशेषज्ञ लाइब्रेरियों जैसे crypto-random पर मुड़ते हैं।

इसके अलावा, mwc-random जैसी वैकल्पिक लाइब्रेरियाँ सिमुलेशन और अन्य अनुप्रयोगों के लिए बेहतर प्रदर्शन और यादृच्छिक संख्याओं की गुणवत्ता प्रदान करती हैं, जिनमें मर्सेन ट्विस्टर जैसी आधुनिक एल्गोरिथ्म को लागू किया गया है।

Haskell में यादृच्छिक संख्या उत्पन्न करने के दृष्टिकोण का चयन करते समय, किसी अनुप्रयोग की आवश्यकताओं पर विचार करना अनिवार्य है जिसमें यादृच्छिकता की गुणवत्ता, प्रदर्शन, और सुरक्षा शामिल हैं, ताकि सबसे उपयुक्त टूल या लाइब्रेरी का चयन किया जा सके।