مسیرها
/
Java
Java
/
تمرین‌ها
/
دفترچه‌ی ناخدا
دفترچه‌ی ناخدا

دفترچه‌ی ناخدا

تمرین یادگیری

مقدمه

تصادفی بودن

می‌توان از یک نمونه از کلاس java.util.Random برای تولید اعداد تصادفی در Java استفاده کرد.

اعداد صحیح تصادفی

می‌توان با استفاده از متد 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 است. او اغلب بازی‌های نقش‌آفرینی کاغذی و قلمی بازی می‌کند که در آن‌ها خودش و دوستانش وانمود می‌کنند خدمه‌ی Starship Enterprise هستند. شخصیت مری، کاپیتان پیکارد است، یعنی او باید دفترچه‌ی وقایع کاپیتان را بنویسد. او بخش خلاقانه‌ی بازی را دوست دارد، اما دوست ندارد در لحظه داده‌های تصادفی تولید کند.

با ساختن تولیدکننده‌های تصادفی برای داده‌هایی که معمولاً در دفترچه‌ی وقایع کاپیتان ظاهر می‌شوند، به مری کمک کنید.

Note

پیاده‌سازی اولیه‌ی این تمرین یک نمونه‌ی java.util.Random را به عنوان آرگومان سازنده می‌گیرد. این کار به تست‌های تمرین اجازه می‌دهد نمونه‌ای با «بذر» از پیش تعیین‌شده ارسال کنند، که نتایج تست را قابل پیش‌بینی می‌کند.

بنابراین انتظار می‌رود در پیاده‌سازی خود از نمونه‌ی java.util.Random که در اختیارتان قرار گرفته استفاده کنید.

1. تولید یک سیاره‌ی تصادفی

Starship Enterprise در سفرهایش با سیاره‌های زیادی روبه‌رو می‌شود. سیاره‌های دنیای Star Trek بر اساس ویژگی‌هایشان به دسته‌هایی تقسیم می‌شوند. برای نمونه، زمین سیاره‌ای از کلاس M است. همه‌ی کلاس‌های سیاره‌ای ممکن عبارت‌اند از: D، H، J، K، L، M، N، R، T و Y.

متد randomPlanetClass() را پیاده‌سازی کنید. باید یکی از کلاس‌های سیاره‌ای را به‌صورت تصادفی برگرداند.

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

2. تولید یک شماره‌ی ثبت تصادفی برای سفینه‌ی فضایی

Enterprise (با شماره‌ی ثبت NCC-1701) تنها سفینه‌ی فضایی‌ای نیست که در فضا پرواز می‌کند! وقتی با سفینه‌ی فضایی دیگری ملاقات می‌کند، مری باید شماره‌ی ثبت آن سفینه را یادداشت کند.

شماره‌های ثبت با پیشوند «NCC-» آغاز می‌شوند و پس از آن عددی از 1000 تا 9999 (شامل هر دو عدد) می‌آید.

متد randomShipRegistryNumber() را پیاده‌سازی کنید که یک شماره‌ی ثبت تصادفی برای سفینه‌ی فضایی برمی‌گرداند.

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

3. تولید یک تاریخ ستاره‌ای تصادفی

دفترچه‌ی وقایعی که تاریخ نداشته باشد چه فایده‌ای دارد؟

«تاریخ ستاره‌ای» یک عدد ممیز شناور است. ماجراهای Starship Enterprise در فصل اول 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 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.