2016-03-29 5 views
6

मैं बीज या हैश कैसे उत्पन्न करूंगा जो वास्तव में रैंड को यादृच्छिक बनाएगा? जब भी यह एक संख्या चुनता है तो मुझे इसे बदलने की ज़रूरत है। सी ++ के लिए नया इसलिए मुझे बिल्कुल यकीन नहीं है कि यह कैसे करें। धन्यवाद! : डीरैंड वास्तव में यादृच्छिक बनाने के लिए मैं एक यादृच्छिक बीज/हैश कैसे बनाऊं?

+0

@DevanshMohanKaushik - आपके सुझाए गए डुप्लिकेट में संदर्भित प्रश्न/उत्तर एक बुरा सुझाव है, क्योंकि वे बीज के रूप में समय का उपयोग करने की वकालत करते हैं - जो खराब अभ्यास है और नकल यादृच्छिक numb का कारण बन सकता है प्रक्रियाओं के बीच एक ही समय में बीज (वेब ​​सर्वर सोचें) – Soren

+0

@ सोरेन में यह अन्य उपयोगी उत्तरों के लिंक भी शामिल है जिसमें आपने कॉमेंट अनुभाग में उल्लेख किया था। – Hummingbird

+0

यह प्रश्न सी ++ के लिए है जबकि डुप्लिकेट चिह्नित सी –

उत्तर

1

पर्यावरणीय डेटा नमूना किए बिना या क्वांटम यादृच्छिक संख्या स्रोत तक पहुंचने के बिना "वास्तव में यादृच्छिक" यादृच्छिक संख्या जेनरेटर जैसी कोई चीज़ नहीं है। अगर आपको वास्तव में यादृच्छिक संख्याएं (http://qrng.anu.edu.au/FAQ.php#api) की आवश्यकता होती है तो एएनयू यादृच्छिक संख्या स्रोत तक पहुंचने पर विचार करें। http://www.boost.org/doc/libs/1_58_0/doc/html/boost_random.html

+3

के लिए पूछ रहा है नोट करें कि अधिकतर बूस्ट यादृच्छिक सी ++ 11 के साथ मानकीकृत किया गया था, और इसे '' के माध्यम से एक्सेस किया जा सकता है। – Yuushi

5

सी ++ के साथ 11 आप std::random_device उपयोग कर सकते हैं:

अन्यथा, बूस्ट एक और अधिक मजबूत छद्म RNG है, जो सबसे प्रयोजनों के लिए पर्याप्त होना चाहिए प्रदान करता है। मैं आपको एक व्यापक गाइड के लिए link देखने का सुझाव दूंगा। चाहिए कभी नहीं उपयोग srand & rand आप, लेकिन इसके बजाय std::random_device और std::mt19937 का उपयोग करें - ज्यादातर मामलों के लिए, निम्नलिखित होगा आप क्या चाहते हैं:

वीडियो लिंक से आवश्यक संदेश निकाला जा रहा है

#include <iostream> 
#include <random> 
int main() { 
    std::random_device rd; 
    std::mt19937 mt(rd()); 
    std::uniform_int_distribution<int> dist(0,99); 
    for (int i = 0; i < 16; i++) { 
     std::cout << dist(mt) << " "; 
    } 
    std::cout << std::endl; 
} 
संबंधित मुद्दे