Java Academy · पाठ

रैंडम रेंज और शफ़लिंग

सीमित रैंडम संख्याएँ और कलेक्शन को शफ़ल करना

पाठ 3, कुल 4 में से13 चरण

रैंडम रेंज और शफ़लिंग, CoddyKit पर Java Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Java Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

श्रेणियाँ और फेरबदल

वास्तविक प्रोग्रामों में शायद ही कभी 0 से bound-1 तक के मान पर्याप्त होते हैं। इस पाठ में मनमानी श्रेणियाँ, संग्रहों का यादृच्छिक फेरबदल और यादृच्छिक तत्व चुनना शामिल है।

विशिष्ट श्रेणी का सूत्र

min से max तक, दोनों सीमाओं सहित, पूर्णांक उत्पन्न करने के लिए min + rng.nextInt(max - min + 1) का उपयोग करें।

import java.util.Random;

public class Main {
    public static void main(String[] args) {
        Random rng = new Random();
        int min = 10, max = 20;
        int value = min + rng.nextInt(max - min + 1);
        System.out.println("10 to 20: " + value);
    }
}

प्रारंभिक मान और सीमा के साथ nextInt

आधुनिक Java में आप सीधे nextInt(origin, bound) कॉल कर सकते हैं: प्रारंभिक मान शामिल होता है और सीमा शामिल नहीं होती। इससे हाथ से सूत्र लिखने की आवश्यकता नहीं रहती।

import java.util.Random;

public class Main {
    public static void main(String[] args) {
        Random rng = new Random();
        int value = rng.nextInt(10, 21);
        System.out.println("10 to 20: " + value);
    }
}

एक श्रेणी में यादृच्छिक दशमलव मान

lo से hi तक का दशमलव मान पाने के लिए lo + rng.nextDouble() * (hi - lo) का उपयोग करें।

import java.util.Random;

public class Main {
    public static void main(String[] args) {
        Random rng = new Random();
        double lo = 5.0, hi = 7.5;
        double value = lo + rng.nextDouble() * (hi - lo);
        System.out.println(value);
    }
}

सूची का फेरबदल

Collections.shuffle(list) किसी List के क्रम को वहीं यादृच्छिक रूप से बदलता है। यह ताश की गड्डियों और यादृच्छिक प्रश्नोत्तरी के लिए बहुत उपयोगी है।

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> deck = new ArrayList<>(List.of(1, 2, 3, 4, 5));
        Collections.shuffle(deck);
        System.out.println(deck);
    }
}

पुनरुत्पादनीय फेरबदल

नियतात्मक फेरबदल पाने के लिए दूसरे तर्क के रूप में बीज वाला Random दें: Collections.shuffle(list, new Random(seed))।

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

public class Main {
    public static void main(String[] args) {
        List<Integer> deck = new ArrayList<>(List.of(1, 2, 3, 4, 5));
        Collections.shuffle(deck, new Random(99));
        System.out.println(deck);
    }
}

फेरबदल के लिए परिवर्तनशील सूची आवश्यक है

List.of(...) एक अपरिवर्तनीय सूची बनाता है। इसमें फेरबदल करने पर UnsupportedOperationException आता है। पहले इसे new ArrayList<>(...) में लपेटें।

यादृच्छिक तत्व चुनना

यादृच्छिक अनुक्रमणिका उत्पन्न करके और get का उपयोग करके कोई यादृच्छिक तत्व चुनें।

import java.util.List;
import java.util.Random;

public class Main {
    public static void main(String[] args) {
        List<String> colors = List.of("red", "green", "blue");
        Random rng = new Random();
        String pick = colors.get(rng.nextInt(colors.size()));
        System.out.println("Chosen: " + pick);
    }
}

सरणी का फेरबदल

सरणियों में अंतर्निर्मित shuffle नहीं होता। सामान्य तरीका Fisher-Yates एल्गोरिदम है: प्रत्येक तत्व को उससे पहले के या उसी स्थान के किसी यादृच्छिक स्थान वाले तत्व से बदलें।

import java.util.Arrays;
import java.util.Random;

public class Main {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5};
        Random rng = new Random(3);
        for (int i = arr.length - 1; i > 0; i--) {
            int j = rng.nextInt(i + 1);
            int tmp = arr[i];
            arr[i] = arr[j];
            arr[j] = tmp;
        }
        System.out.println(Arrays.toString(arr));
    }
}

यादृच्छिक नमूना-चयन

कई अलग-अलग तत्व चुनने के लिए किसी प्रतिलिपि का फेरबदल करके शुरुआती कुछ तत्व लें, या पहले से चुनी गई अनुक्रमणिकाओं पर नज़र रखने के लिए Set का उपयोग करें। छोटी सूचियों के लिए फेरबदल करके फिर खंड लेना सबसे सरल है।

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> pool = new ArrayList<>(List.of(1, 2, 3, 4, 5, 6, 7, 8));
        Collections.shuffle(pool);
        List<Integer> sample = pool.subList(0, 3);
        System.out.println("Sample: " + sample);
    }
}

व्यावहारिक बातें

जब पूरे क्रम को यादृच्छिक रूप से बदलना हो, तब फेरबदल करें; सीमित मान चाहिए हों, तब विशिष्ट श्रेणी के सूत्र का उपयोग करें। जब ऊपरी सीमा को शामिल करना हो, तो एक की त्रुटि का हमेशा ध्यान रखें।

त्वरित जाँच

श्रेणियों और फेरबदल के बारे में अपनी समझ जाँचें।

पुनरावलोकन

आपने श्रेणियाँ और फेरबदल सीखा।

  • श्रेणियों के लिए min + nextInt(max - min + 1) या nextInt(origin, bound) का उपयोग करें।
  • Collections.shuffle परिवर्तनशील सूची का क्रम वहीं बदलता है।
  • फेरबदल को फिर से उत्पन्न करने योग्य बनाने के लिए बीज दें।
  • यादृच्छिक अनुक्रमणिका के माध्यम से यादृच्छिक तत्व चुनें।
शुरुआत निःशुल्क

एआई शिक्षक के साथ Java सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
104
पाठ
374

अक्सर पूछे जाने वाले प्रश्न

क्या “रैंडम रेंज और शफ़लिंग” पाठ निःशुल्क है?

हाँ—“रैंडम रेंज और शफ़लिंग” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Java Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“रैंडम रेंज और शफ़लिंग” में मैं क्या सीखूँगा?

सीमित रैंडम संख्याएँ और कलेक्शन को शफ़ल करना आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Java Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Java Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Java Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“रैंडम रेंज और शफ़लिंग” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Java Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Java Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Math क्लास
  2. रैंडम संख्याएँ बनाना
  3. रैंडम रेंज और शफ़लिंग
  4. गणितीय राउंडिंग और सीमाएँ
← Java Academy पर वापस जाएँ