কম্পিউটার টিউটোরিয়াল

জাভা র‍্যান্ডম নম্বর জেনারেট: শুরুর গাইড

জাভা-তে র‍্যান্ডম নম্বর জেনারেট করার পদ্ধতি

৫। ৭। ২২। আমরা মানুষের জন্য র‍্যান্ডম নম্বর জেনারেট করা খুব সহজ। শুধু নিজের থেকে একটি নম্বর চাইলে দাঁতের নিচে একটা আসে।

প্রোগ্রামিং-এও এটাই যদি সহজ হত! জাভা-তে র‍্যান্ডম নম্বর জেনারেট করা সহজ, যদি আপনি জানেন কীভাবে।

এই গাইডে আমরা র‍্যান্ডম নম্বর জেনারেট করার তিনটি পদ্ধতি আলোচনা করব। প্রতিটি মেথড কীভাবে কাজ করে সেটি একটি নম্বর গেসিং গেমের কনটেক্সটে উদাহরণসহ ব্যাখ্যা করব।

র‍্যান্ডম নম্বর জেনারেট করা

আমরা সবাই এমন গেম খেলেছি যা আপনাকে একটি নম্বর অনুমান করতে বলে। কিছু গেমে সঠিক অনুমান করলে পুরস্কারও দিয়ে থাকে। এই গাইডে আমরা জাভা-তে একটি নম্বর গেসিং গেম তৈরি করব।

প্রথম ধাপ হলো র‍্যান্ডম নম্বর জেনারেট করা। র‍্যান্ডম নম্বর ছাড়া আমাদের গেম মজাদার হবena। প্রতিটি মেথড কীভাবে কাজ করে সেটি দেখি।

Random ক্লাস ব্যবহার করা

জাভা-তে একটি হ্যান্ডি ক্লাস রয়েছে "Random" নামে যা র‍্যান্ডম নম্বর জেনারেট করতে ব্যবহার করা যায়। java.util.Random ক্লাস ব্যবহার করে র‍্যান্ডম নম্বর স্ট্রিম জেনারেট করি:

import java.util.Random;
class Main {
    public static void main(String args[]) {
        Random random_number_generator = new Random();
        int random_number = random_number_generator.nextInt(25);
        System.out.println(random_number);
    }
}

এই ক্লাস তিনবার চালালে তিনটি র‍্যান্ডম নম্বর জেনারেট হবে:

22
15
19

আমরা java.util.Random ক্লাস ইম্পোর্ট করেছি। তারপর এই ক্লাসের একটি ইনস্ট্যান্স তৈরি করেছি "random_number_generator" নামে। এই ইনস্ট্যান্স ব্যবহার করে আমরা র‍্যান্ডম নম্বর জেনারেট করতে পারি।

nextInt() মেথড আমাদের ০ থেকে অন্য একটি নির্দিষ্ট নম্বর পর্যন্ত র‍্যান্ডম নম্বর জেনারেট করতে দেয়। উপরে আমরা ২৫ নির্দিষ্ট করেছি। অর্থাৎ জেনারেটর ০ থেকে ২৫ পর্যন্ত নম্বর ফেরত দেবে।

Math.random() ব্যবহার করা

Math.random() মেথড একটু বেশি কাজ নিতে পারে, কিন্তু এটিও র‍্যান্ডম নম্বর জেনারেট করার একটি ভালো পদ্ধতি। Math.random() ব্যবহার করে র‍্যান্ডম নম্বর জেনারেটর সিকোয়েন্স তৈরি করি:

class Main {
    public static void main(String args[]) {
        int small = 0;
        int large = 25;
        int random_number = (int)(Math.random() * (large - small + 1) + small);
        System.out.println(random_number);
    }
}

Math.random() জাভা-তে বিল্ট-ইন রয়েছে। এর মানে আমাদের কোডে এটি ইম্পোর্ট করতে হয় না।

আমরা দুটি ভেরিয়েবল ঘোষণা করেছি। "small" নির্দেশ করে নিচের সীমা যেখানোর নিচে কোনো নম্বর জেনারেট হবে না; "large" নির্দেশ করে ওপরের সীমা যেখানোর ওপরে কোনো নম্বর জেনারেট হবে না।

তারপর একটি ফর্মুলা ব্যবহার করে র‍্যান্ডম নম্বর জেনারেট করেছি। কারণ Math.random() নিজে থেকে একটি পূর্ণসংখ্যা র‍্যান্ডম নম্বর ফেরত দেয় না। Math.random মেথড ০.০ থেকে ১.০ পর্যন্ত র‍্যান্ডম নম্বর ফেরত দেয়। আমাদের উপরের ফর্মুলা ব্যবহার করে এটিকে আমাদের রেঞ্জের মধ্যে একটি পূর্ণসংখ্যায় রূপান্তর করতে হয়।

কোড তিনবার চালালে তিনটি র‍্যান্ডম নম্বর:

2
1
9

ThreadLocalRandom ব্যবহার করা

ThreadLocalRandom একটি ক্লাস যা র‍্যান্ডম নম্বর জেনারেট করতে ব্যবহার করা যায়।

এই ক্লাসটি সেরা কাজ করে যখন আপনি একসাথে একাধিক র‍্যান্ডম নম্বর জেনারেট করতে চান। এটি সাধারণত মাল্টি-থ্রেডিং এনভায়রনমেন্টে হয়।

এই মেথড ব্যবহার করে র‍্যান্ডম নম্বর জেনারেটর তৈরি করি:

import java.util.concurrent.ThreadLocalRandom;
class Main {
    public static void main(String args[]) {
        int small = 0;
        int large = 25;
        ThreadLocalRandom random_number_generator = ThreadLocalRandom.current();
        int random_number = random_number_generator.nextInt(small, large);
        System.out.println(random_number);
    }
}

আমরা ThreadLocalRandom লাইব্রেরি ইম্পোর্ট করেছি যেটিতে আমাদের ব্যবহৃত ক্লাস রয়েছে। তারপর দুটি ভেরিয়েবল দিয়ে র‍্যান্ডম নম্বর জেনারেটরের নিচের ও ওপরের সীমা সেট করেছি।

random_number_generator ভেরিয়েবল ঘোষণা করেছি যা ThreadLocalRandom ক্লাসকে রেফার করে। তারপর nextInt() মেথড ব্যবহার করে "small" এবং "large" ভেরিয়েবল আর্গুমেন্ট হিসেবে পাস করে র‍্যান্ডম নম্বর জেনারেট করেছি।

প্রোগ্রাম তিনবার এক্সিকিউট করলে তিনটি র‍্যান্ডম নম্বর:

4
23
15

এখন আমরা আমাদের গেসিং গেমের বাকি অংশ তৈরি করার জন্য প্রস্তুত।

গেস লজিক তৈরি করা

এখন আমরা জানি র‍্যান্ডম নম্বর কীভাবে জেনারেট করতে হয়। আমাদের গেম তৈরির পরবর্তী ধাপ হলো ইউজারকে র‍্যান্ডম নম্বর অনুমান করার লজিক তৈরি করা।

উপরের যেকোনো উদাহরণ এই কোডের সাথে ব্যবহার করতে পারেন। আমাদের কোড স্নিপেটের ভেরিয়েবল নামগুলো নিচের উদাহরণের সাথে কম্প্যাটিবল রাখা হয়েছে।

Scanner ক্লাস ব্যবহার করে ইউজারকে একটি নম্বর অনুমান করতে বলি:

import java.util.Scanner;
class Main {
    public static void main(String[] args) {
        // Guessing code goes here
        Scanner guess = new Scanner(System.in);
        System.out.println("Guess a number between 1 and 25: ");
        int user_guess = guess.nextInt();
    }
}

এই কোড ইউজারকে "Guess a number between 1 and 25: " বলবে। ইউজার জাভা কনসোলে যে মান দেবে সেটি "user_guess" ভেরিয়েবলে সংরক্ষিত হবে।

তারপর একটি if স্টেটমেন্ট লিখব যা চেক করবে ইউজার অনুমান করা নম্বর প্রোগ্রাম জেনারেট করা নম্বরের সমান কিনা:

...
if (user_guess == random_number) {
    System.out.println("You have correctly guessed the number!");
} else {
    System.out.println("Your guess is incorrect!");
}

প্রোগ্রাম চালিয়ে ১ থেকে ২৫ এর মধ্যে একটি নম্বর টাইপ করি:

Guess a number between 1 and 25: 7
Your guess is incorrect!

যদি সঠিক অনুমান করি, প্রোগ্রাম ফেরত দেবে:

Guess a number between 1 and 25: 9
You have correctly guessed the number!

কয়েক লাইন কোড দিয়ে আমরা সফলভাবে একটি গেম তৈরি করলাম যা অনুমানের জন্য র‍্যান্ডম নম্বর জেনারেট করে।

উপসংহার

র‍্যান্ডম নম্বরের প্রোগ্রামিং-এ ব্যাপক ব্যবহার রয়েছে। এই উদাহরণে আমরা একটি গেসিং গেমের সাথে র‍্যান্ডম নম্বর কীভাবে ব্যবহার করা যায় তা দেখিয়েছি।

র‍্যান্ডম নম্বর জেনারেট করার তিনটি পদ্ধতি রয়েছে:

  • Random ক্লাস ব্যবহার করে
  • বিল্ট-ইন Math.random() মেথড ব্যবহার করে
  • ThreadLocalRandom ক্লাস ব্যবহার করে

চ্যালেঞ্জ চাইলে আমাদের গেসিং গেম কোড পরিবর্তন করুন যাতে একাধিকবার অনুমান করা যায়।

  1. জাভা Math.random ব্যবহার করার পদ্ধতি

  2. জাভা সাবস্ট্রিং: একটি হাও-টু গাইড

  3. জাভা কম্পাইলার: ধাপে ধাপে গাইড

  4. পাইথনে র‍্যান্ডম নম্বর (Random Numbers)