रैंड() या qrand() फ़ंक्शन के बीच यादृच्छिक संख्या यादृच्छिक int उत्पन्न करती है।दो रेंज
int a= rand();
मैं 0 और 1. मैं इस काम कैसे कर सकते हैं के बीच एक यादृच्छिक संख्या प्राप्त करना चाहते हैं?
रैंड() या qrand() फ़ंक्शन के बीच यादृच्छिक संख्या यादृच्छिक int उत्पन्न करती है।दो रेंज
int a= rand();
मैं 0 और 1. मैं इस काम कैसे कर सकते हैं के बीच एक यादृच्छिक संख्या प्राप्त करना चाहते हैं?
आप एक यादृच्छिक int
एक float
में उत्पन्न कर सकते हैं, और फिर RAND_MAX
से विभाजित कर देते हैं:
float a = rand(); // you can use qrand here
a /= RAND_MAX;
परिणाम रेंज में शून्य से एक करने के लिए समावेशी हो जाएगा।
#include <iostream>
#include <ctime>
using namespace std;
//
// Generate a random number between 0 and 1
// return a uniform number in [0,1].
inline double unifRand()
{
return rand()/double(RAND_MAX);
}
// Reset the random number generator with the system clock.
inline void seed()
{
srand(time(0));
}
int main()
{
seed();
for (int i = 0; i < 20; ++i)
{
cout << unifRand() << endl;
}
return 0;
}
चेक this पोस्ट, यह आपके उद्देश्य के लिए qrand उपयोग करने के लिए कैसे जो afaik रैंड के चारों ओर एक threadsafe आवरण() है पता चलता है।
#include <QGlobal.h>
#include <QTime>
int QMyClass::randInt(int low, int high)
{
// Random number between low and high
return qrand() % ((high + 1) - low) + low;
}
सी ++ 11 का उपयोग करते हुए आप निम्नलिखित कर सकते हैं:
#include<random>
परिभाषित PRNG और वितरण:
std::default_random_engine generator;
std::uniform_real_distribution<double> distribution(0.0,1.0);
जाओ
यादृच्छिक शीर्षक शामिल करें यादृच्छिक संख्या
double number = distribution(generator);
this page में और this page में आप uniform_real_distribution
के बारे में कुछ संदर्भ पा सकते हैं।
यादृच्छिक संख्या से एक मॉड्यूल लें जो परिशुद्धता को परिभाषित करेगा। फिर मॉड्यूल द्वारा तैरने और विभाजित करने के लिए एक टाइपकास्ट करें।
float randNum(){
int random = rand() % 1000;
float result = ((float) random)/1000;
return result;
}
सरल, कामकाजी समाधान। सिर्फ एक गोचाचा: यदि मॉड्यूल (इस मामले में 1000) 'RAND_MAX' द्वारा समान रूप से विभाजित नहीं है, तो इसके द्वारा उत्पादित यादृच्छिक संख्या सीमा में बड़े लोगों की तुलना में छोटी संख्या उत्पन्न करने की दिशा में थोड़ी पक्षपातपूर्ण होगी। – Jakob
'आरएND_MAX' जनरेटर वापस आने वाला सबसे बड़ा मूल्य है, इसलिए सीमा एक, समावेशी हो जाती है। –
@PeteBecker आप सही हैं, यह दोनों सिरों पर समावेशी है। धन्यवाद! – dasblinkenlight