ট্র্যাক
/
Java
Java
/
অনুশীলনী
/
ক্যাপ্টেনের লগ
ক্যাপ্টেনের লগ

ক্যাপ্টেনের লগ

লার্নিং অনুশীলনী

ভূমিকা

র‍্যান্ডমনেস

Java-তে র‍্যান্ডম সংখ্যা জেনারেট করতে java.util.Random ক্লাসের একটি ইনস্ট্যান্স ব্যবহার করা যায়।

র‍্যান্ডম ইন্টিজার

nextInt() মেথড ব্যবহার করে একটি র‍্যান্ডম ইন্টিজার জেনারেট করা যায়। এটি Integer.MIN_VALUE থেকে Integer.MAX_VALUE পর্যন্ত পরিসরের একটি মান জেনারেট করবে।

Random random = new Random();

random.nextInt();
// => -1169335537

জেনারেট করা মানের পরিসর সীমিত করতে, nextInt(int) ব্যবহার করুন। এটি 0 (অন্তর্ভুক্ত) থেকে প্রদত্ত ঊর্ধ্বসীমা (অন্তর্ভুক্ত নয়) পর্যন্ত একটি মান জেনারেট করবে।

উদাহরণস্বরূপ, এটি 0 থেকে 9 পর্যন্ত একটি র‍্যান্ডম সংখ্যা জেনারেট করবে।

Random random = new Random();

random.nextInt(10);
// => 6

এবং এটি 10 থেকে 19 পর্যন্ত একটি র‍্যান্ডম সংখ্যা জেনারেট করবে।

Random random = new Random();

10 + random.nextInt(10);
// => 11

র‍্যান্ডম ডাবল

nextDouble() মেথড ব্যবহার করে একটি র‍্যান্ডম ডাবল জেনারেট করা যায়। এটি 0.0 থেকে 1.0 পর্যন্ত পরিসরের একটি মান জেনারেট করবে।

Random random = new Random();

random.nextDouble();
// => 0.19250004204021398

এবং এটি 100.0 থেকে 200.0 পর্যন্ত একটি র‍্যান্ডম সংখ্যা জেনারেট করবে।

Random random = new Random();

100.0 + 100.0 * random.nextDouble();
// => 111.31849856260328

নির্দেশনা

মেরি টিভি সিরিজ Star Trek: The Next Generation-এর একজন বড় ভক্ত। তিনি প্রায়ই কলম-কাগজে খেলা রোল-প্লেয়িং গেম খেলেন, যেখানে তিনি আর তাঁর বন্ধুরা স্টারশিপ এন্টারপ্রাইজ-এর ক্রু সেজে থাকে। মেরির চরিত্রটি ক্যাপ্টেন পিকার্ড, অর্থাৎ তাঁকে ক্যাপ্টেনের লগটি রাখতে হয়। গেমটির সৃজনশীল অংশটি তিনি দারুণ ভালোবাসেন, কিন্তু সঙ্গে সঙ্গে র‍্যান্ডম ডেটা বানানো তাঁর পছন্দ নয়।

ক্যাপ্টেনের লগে কমন যে ডেটাগুলো আসে, সেগুলোর জন্য র‍্যান্ডম জেনারেটর তৈরি করে মেরিকে সাহায্য করুন।

Note

এই অনুশীলনীর স্টার্টার ইমপ্লিমেন্টেশন কনস্ট্রাক্টর আর্গুমেন্ট হিসেবে একটি java.util.Random ইনস্ট্যান্স নেয়। এর ফলে অনুশীলনীর testগুলো আগে থেকে নির্ধারিত সিডসহ একটি ইনস্ট্যান্স পাঠাতে পারে, যার ফলে test-এর ফলাফল পূর্বানুমেয় হয়ে যায়।

তাই আপনার ইমপ্লিমেন্টেশনে প্রদত্ত java.util.Random ইনস্ট্যান্সটি ব্যবহার করা প্রত্যাশিত।

1. একটি র‍্যান্ডম গ্রহ তৈরি করুন

ভ্রমণের পথে স্টারশিপ এন্টারপ্রাইজ অনেক গ্রহের মুখোমুখি হয়। Star Trek মহাবিশ্বের গ্রহগুলোকে তাদের বৈশিষ্ট্যের ভিত্তিতে ক্যাটাগরিতে ভাগ করা হয়েছে। যেমন পৃথিবী একটি M ক্লাসের গ্রহ। সম্ভাব্য সব গ্রহ-ক্লাস হলো: D, H, J, K, L, M, N, R, T আর Y।

randomPlanetClass() মেথডটি ইমপ্লিমেন্ট করুন। এটি র‍্যান্ডমভাবে গ্রহ-ক্লাসগুলোর যেকোনো একটি রিটার্ন করবে।

captainsLog.randomPlanetClass();
// => "K"

2. একটি র‍্যান্ডম স্টারশিপ রেজিস্ট্রি নম্বর তৈরি করুন

এন্টারপ্রাইজ (রেজিস্ট্রি নম্বর NCC-1701) একমাত্র স্টারশিপ নয় যা মহাকাশে ঘুরে বেড়ায়! অন্য কোনো স্টারশিপের সঙ্গে এর সাক্ষাৎ হলে মেরিকে সেই স্টারশিপের রেজিস্ট্রি নম্বরটি লগ করতে হয়।

রেজিস্ট্রি নম্বরগুলো "NCC-" প্রিফিক্স দিয়ে শুরু হয়, এরপর 1000 থেকে 9999 পর্যন্ত (সহ) একটি সংখ্যা থাকে।

randomShipRegistryNumber() মেথডটি ইমপ্লিমেন্ট করুন, যা একটি র‍্যান্ডম স্টারশিপ রেজিস্ট্রি নম্বর রিটার্ন করে।

captainsLog.randomShipRegistryNumber();
// => "NCC-1947"

3. একটি র‍্যান্ডম স্টারডেট তৈরি করুন

তারিখ না থাকলে লগের আর কী কাজ?

স্টারডেট হলো একটি ফ্লোটিং পয়েন্ট সংখ্যা। The Next Generation-এর প্রথম সিজনের স্টারশিপ এন্টারপ্রাইজ-এর অভিযানগুলো 41000.0 থেকে 42000.0 স্টারডেটের মধ্যে ঘটে। এখানে "4" বলতে ২৪তম শতাব্দী বোঝায়, আর "1" বলতে প্রথম সিজন।

randomStardate() মেথডটি ইমপ্লিমেন্ট করুন, যা 41000.0 (সহ) থেকে 42000.0 (ব্যতীত) পর্যন্ত একটি ফ্লোটিং পয়েন্ট সংখ্যা রিটার্ন করে।

captainsLog.randomStardate();
// => 41458.15721310934
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Java Exercism

ক্যাপ্টেনের লগ শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, Java ট্র্যাকের 26টি কনসেপ্ট158টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।