मैं 0 और 1 के बीच सी ++ में समान यादृच्छिक संख्याएं उत्पन्न करना चाहता हूं, जो मानक rand()
और srand(time(NULL))
विधि का उपयोग नहीं करता है । इसका कारण यह है कि यदि मैं अपनी घड़ी के एक ही सेकंड के भीतर एक से अधिक बार एप्लिकेशन चलाता हूं, तो बीज बिल्कुल वही होगा और उसी आउटपुट का उत्पादन करेगा।टीआर 1/देव/यादृच्छिक (<1 सेकंड रन के लिए लचीला) का उपयोग कर सी ++ में यादृच्छिक संख्याएं उत्पन्न करना
मैं बूस्ट या ओएस/कंपाइलर विनिर्देशों पर भरोसा नहीं करना चाहता हूं। x86 माना जा सकता है।
ऐसा लगता है कि ऐसा करने का एक वैकल्पिक तरीका TR1 (मेरे पास सी ++ 11 नहीं है) और /dev/random
के साथ बीजिंग का उपयोग करना है?
अभी मैं इस किया है, लेकिन यह अभी भी एक बीज जो अच्छी तरह से 1 सेकंड रन के भीतर काम नहीं करेगा के रूप में time(NULL)
उपयोग करता है:
#include <iostream>
#include <tr1/random>
int main()
{
std::tr1::mt19937 eng;
eng.seed(time(NULL));
std::tr1::uniform_int<int> unif(1, RAND_MAX);
int u = unif(eng);
std::cout << (float)u/RAND_MAX << std::endl;
}
क्या आप ओएस/कंपाइलर-विशिष्ट कार्यों का उपयोग करने के इच्छुक हैं? – Mysticial
मैं इससे बचना चाहता हूं ... मैं इसे विभिन्न प्रणालियों पर तैनात कर दूंगा – gnychis
कितने अलग? क्या वे अभी भी सभी x86 हैं? – Mysticial