मैं समझता हूं कि समय (0) आम तौर पर यादृच्छिक संख्या जेनरेटर बीजिंग के लिए उपयोग कर रहा है और यह केवल एक समस्या बन जाती है जब कार्यक्रम प्रति सेकंड एक से अधिक बार चलाया जा रहा है। मैं सोच रहा हूं कि यादृच्छिक संख्या उत्पन्न करते समय विचार करने के लिए कुछ बेहतर बीज क्या हैं। मैंने विंडोज पर GetTickCount, TimeGetTime, और QueryPerformanceCounter के बारे में पढ़ा है। क्या ये लगभग सभी परिचालनों के लिए पर्याप्त होंगे या बेहतर बीजिंग विकल्प भी होंगे?समय से बेहतर बीज (0)?
यहां एक त्वरित कोड बढ़ावा लाइब्रेरी का उपयोग कर उदाहरण है:
#include <iostream>
#include <boost/random.hpp>
using namespace std;
using namespace boost;
int main()
{
mt19937 randGen(42);
uniform_int<> range(0,100);
variate_generator<mt19937&, uniform_int<> > GetRand(randGen, range);
for (int i = 0; i < 30; ++i)
cout << GetRand() << endl;
}
यह वास्तव में निर्भर करता है क्या यादृच्छिक संख्या के लिए कर रहे हैं। आप कहते हैं कि समय (0) "प्रोग्राम केवल एक समस्या बन जाता है जब कार्यक्रम प्रति सेकंड एक से अधिक बार चलता है", जो बताता है कि आपकी यादृच्छिक संख्याओं की आवश्यकताएं वास्तव में बहुत कम हैं। हर किसी ने सुरक्षा आवश्यकताओं को मानने का उत्तर दिया है। यदि आपको अपने कार्यक्रम के प्रत्येक भाग के लिए एक अनूठा बीज की आवश्यकता है, तो समय और पीआईडी को संयोजित करें। –
हां, स्पष्ट रूप से बड़े कार्यक्रम, विशेष रूप से ऑनलाइन गेम जो हर दूसरे के हजारों खिलाड़ियों के लिए यादृच्छिक संख्या पीढ़ी कर रहे हैं, उन्हें कुछ और मजबूत की आवश्यकता होगी। हालांकि, इस बिंदु पर मेरे साधारण उद्देश्यों के लिए प्रति सेकंड एक बार धीमा है ठीक है। मैं बिलकुल उत्सुक था। – trikker