Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में रैंडम नंबर कैसे जनरेट करें?

C-स्टाइल रैंडम नंबर जनरेशन

आइए देखते हैं कि C++ का उपयोग करके रैंडम नंबर कैसे जनरेट करें। यहां हम 0 से किसी मान तक की रेंज में एक रैंडम नंबर जनरेट कर रहे हैं (इस प्रोग्राम में मैक्स मान 100 है)।

मुख्य फ़ंक्शन्स

  • srand(seed): रैंडम नंबर जेनरेटर को सीड करता है
  • rand(): छद्म-रैंडम नंबर रिटर्न करता है (0 से RAND_MAX तक)

उदाहरण: 0 से 99 तक रैंडम नंबर

#include <iostream>
#include <cstdlib>  // srand, rand के लिए
#include <ctime>    // time के लिए
using namespace std;

int main() {
    int max = 100;  // ऊपरी सीमा (एक्सक्लूसिव)
    
    // वर्तमान समय के साथ सीड करें (प्रत्येक रन के लिए अलग सीक्वेंस)
    srand(time(0));
    
    cout << "The random number is: " << rand() % max;
    return 0;
}

संभावित आउटपुट्स

The random number is: 51
The random number is: 29
The random number is: 47

रेंज में रैंडम नंबर: सही सूत्र

rand() % max का उपयोग करने से मॉड्यूलो बायस होता है। बेहतर सूत्र:

// [min, max] रेंज में रैंडम इंटीजर
int random_in_range(int min, int max) {
    return min + rand() / (RAND_MAX / (max - min + 1) + 1);
}

// या C++11 के साथ (नीचे देखें)

मॉडर्न C++ (C++11 और बाद): <random> लाइब्रेरी

पुराने rand() के कई दोष हैं: खराब गुणवत्ता, गैर-थ्रेड-सेफ, कोई वितरण नियंत्रण नहीं। C++11 ने <random> हेडर पेश किया:

उदाहरण: मॉडर्न दृष्टिकोण

#include <iostream>
#include <random>
using namespace std;

int main() {
    // रैंडम डिवाइस से सीड (हार्डवेयर एन्ट्रॉपी यदि उपलब्ध हो)
    random_device rd;
    
    // मेर्सेन ट्विस्टर इंजन (उच्च गुणवत्ता, तेज)
    mt19937 gen(rd());
    
    // यूनिफॉर्म वितरण [1, 100]
    uniform_int_distribution<> distrib(1, 100);
    
    // 5 रैंडम नंबर्स जनरेट करें
    for (int i = 0; i < 5; ++i) {
        cout << distrib(gen) << " ";
    }
    cout << endl;
    
    return 0;
}

उपलब्ध वितरण

वितरणउपयोग
uniform_int_distributionरेंज में रैंडम इंटीजर्स
uniform_real_distributionरेंज में रैंडम फ्लोटिंग-पॉइंट
normal_distributionगौसियन (सामान्य) वितरण
bernoulli_distributionबूलियन (सिक्का टॉस)
poisson_distributionपॉइसन वितरण

सिफारिश

नए कोड के लिए हमेशा <random> लाइब्रेरी का उपयोग करें। rand()/srand() केवल लीगेसी कोड संगतता के लिए है।

  1. एंड्रॉइड में दी गई रेंज में रैंडम नंबर कैसे जनरेट करें? एंड्रॉइड में दी गई रेंज में रैंडम नंबर कैसे जनरेट करें?

    एंड्रॉइड में रेंज-बाउंड रैंडम नंबर जनरेशन यह ट्यूटोरियल दर्शाता है कि उपयोगकर्ता-निर्दिष्ट न्यूनतम और अधिकतम मानों के बीच रैंडम इंटीजर कैसे जनरेट करें, इनपुट वैलिडेशन और एरर हैंडलिंग के साथ। लेआउट (activity_main.xml) <LinearLayout xmlns:android=https://schemas.android.com/apk/res/android and

  1. - C++ में मितव्ययी संख्या (Frugal Number)

    इस समस्या में, हमें एक धनात्मक पूर्णांक N दिया गया है। हमारा कार्य यह जांचने के लिए एक प्रोग्राम बनाना है कि दी गई संख्या मितव्ययी संख्या है या नहीं। मितव्ययी संख्या (FRUGAL NUMBER) − एक संख्या जिसके अंकों की संख्या उस संख्या के अभाज्य गुणनखंडन में अंकों की संख्या से सख्ती से अधिक है। उदाहरण &

  1. C++ में पेंटाटोप संख्या C++ में पेंटाटोप संख्या

    एक पेंटाटोप संख्या को पास्कल के त्रिभुज में पांचवीं संख्या के रूप में वर्णित किया गया है। अब, चूंकि यह पांचवीं संख्या है, इसका मतलब है कि पास्कल के त्रिभुज में कम से कम पांच संख्याएं होनी चाहिए, इसलिए इस श्रृंखला की पहली संख्या 1 4 6 4 1 से शुरू होती है जो पास्कल के त्रिभुज की चौथी पंक्ति है। तो, इस